Sobes.tech
Middle

Kuidas te edastaksite foto redaktorile?

sobes.tech AI

Vastus AI-lt

On mitu viisi:

  1. Kasutades faili URI: See on kõige levinum ja tõhusam viis suurte failide, näiteks fotode jaoks.

    • Loome URI pildi failile.
    • Saadame selle URI siht-Activityle Intenti kaudu.
    // Loome URI failist
    val imageFile = File(filesDir, "my_photo.jpg")
    val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile)
    
    // Loome Intent ja lisame URI
    val editIntent = Intent(Intent.ACTION_EDIT)
    editIntent.setDataAndType(imageUri, "image/*")
    editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Oluline URI-le juurdepääsuks
    
    // Käivitame Activity
    startActivity(editIntent)
    
  2. Bitmapi edastamine Intenti kaudu: Sobib väikeste piltide või eelvaadete jaoks. Bitmap serialiseerub, mis võib põhjustada vigu TransactionTooLargeException suure suuruse korral.

    // Saame Bitmapi
    val bitmap: Bitmap = ... // Teie Bitmap
    
    // Loome Intent ja lisame Bitmapi
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_bitmap", bitmap) // Bitmap serialiseerub
    
    // Käivitame Activity
    startActivity(editIntent)
    

    Siht-Activitys:

    val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap")
    // Kasutame bitmapi
    
  3. Faili nime edastamine ühises vahemälus ja selle kasutamine: Kasutatakse ajutiseks failile juurdepääsuks teistele rakendustele.

    • Salvestame faili ajutisse kausta, mis on teistele rakendustele kättesaadav (näiteks rakenduse spetsiifiline vahemälu kataloog).
    • Edastame tee faili Intenti kaudu.
    • Sihtrakendus peab omama õigusi selle kausta lugemiseks.
    // Faili salvestamine ajutisse kataloogi
    val tempFile = File(cacheDir, "temp_photo.jpg")
    // Kirjutame pildi andmed tempFile'i
    
    // Loome Intent ja edastame faili tee
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_path", tempFile.absolutePath)
    
    // Käivitame Activity
    startActivity(editIntent)
    

    Siht-Activitys:

    val imagePath = intent.getStringExtra("image_path")
    val imageFile = File(imagePath)
    // Loeme andmed imageFile'ist
    

Valik sõltub pildi suurusest ja andmevahetusnõuetest Activityde vahel. Suurte piltide jaoks on URI FileProvideri kaudu eelistatud variant.