Sobes.tech
Middle

Чӣ тавр шумо аксро ба муҳаррир интиқол медиҳед?

sobes.tech AI

Ҷавоб аз AI

Кайчудо роҳҳалатҳо ҳастанд:

  1. Истифодаи URI-и файл: Ин усули маъмул ва самаранок барои файлҳои калон, мисли аксҳо.

    • URI барои файл эҷод мекунем.
    • Ин URI-ро тавассути Intent ба Activity мақсад мебарем.
    // URI аз File эҷод мекунем
    val imageFile = File(filesDir, "my_photo.jpg")
    val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile)
    
    // Intent эҷод мекунем ва URI-ро илова мекунем
    val editIntent = Intent(Intent.ACTION_EDIT)
    editIntent.setDataAndType(imageUri, "image/*")
    editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Муҳим барои дастрасӣ ба URI
    
    // Activity-ро оғоз мекунем
    startActivity(editIntent)
    
  2. Истифодаи Bitmap тавассути Intent: Барои тасвирҳои хурд ё пешнамоишҳо мувофиқ аст. Bitmap сериализатсия мешавад, ки метавонад ба хатоҳои TransactionTooLargeException дар андозаи калон оварда расонад.

    // Bitmap-ро мегирем
    val bitmap: Bitmap = ... // Bitmap-и шумо
    
    // Intent эҷод мекунем ва Bitmap-ро илова мекунем
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_bitmap", bitmap) // Bitmap сериализатсия мешавад
    
    // Activity-ро оғоз мекунем
    startActivity(editIntent)
    

    Дар Activity мақсад:

    val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap")
    // Bitmap-ро истифода мебарем
    
  3. Захира кардан ба кеши умумӣ ва интиқол додани номи файл: Барои дастрасии муваққатӣ ба файл дар барномаҳои дигар истифода мешавад.

    • Файлро ба папкаи муваққатӣ, ки ба барномаҳои дигар дастрас аст, (масалан, директорияи кеши махсуси барнома) захира мекунем.
    • Роҳи файлро тавассути Intent мефиристем.
    • Барномаи мақсад бояд ҳуқуқи хондан аз ин папка дошта бошад.
    // Файлро ба папкаи муваққатӣ захира мекунем
    val tempFile = File(cacheDir, "temp_photo.jpg")
    // Маълумотҳои аксро ба tempFile нависем
    
    // Intent эҷод мекунем ва роҳи файлро мефиристем
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_path", tempFile.absolutePath)
    
    // Activity-ро оғоз мекунем
    startActivity(editIntent)
    

    Дар Activity мақсад:

    val imagePath = intent.getStringExtra("image_path")
    val imageFile = File(imagePath)
    // Маълумотҳоро аз imageFile мехонем
    

Интихоби усул вобаста ба андозаи акс ва талаботи мубодилаи маълумот байни Activity. Барои тасвирҳои калон, URI тавассути FileProvider беҳтар аст.