Sobes.tech
Junior

Μπορείτε να μεταφέρετε μια φωτογραφία μέσω ενός Intent;

sobes.tech AI

Απάντηση από AI

Ναι, είναι δυνατό.

  1. Μεταφορά URI: Ο πιο συνηθισμένος και αποτελεσματικός τρόπος είναι να μεταφέρετε το URI του αρχείου φωτογραφίας.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - διαδρομή αρχείου
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Τύπος MIME εικόνας
        putExtra(Intent.EXTRA_STREAM, imageUri) // Μεταφορά URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Παραχώρηση δικαιωμάτων ανάγνωσης για το URI
    }
    startActivity(Intent.createChooser(shareIntent, "Κοινοποίηση εικόνας"))
    
  2. Μεταφορά Bitmap (δεν συνιστάται για μεγάλα αρχεία εικόνων): Μπορείτε να σειριοποιήσετε το Bitmap και να το τοποθετήσετε σε Extra. Ωστόσο, δεν συνιστάται για μεγάλα αρχεία εικόνων λόγω των περιορισμών στο μέγεθος των extras του Intent (συνήθως μέχρι 1 MB) και του πιθανού OutOfMemoryError.

    val bitmap: Bitmap = ... // Το Bitmap σας
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Το Bitmap πρέπει να είναι Parcelable
    }
    startActivity(bitmapIntent)
    

    Κατά τη λήψη:

    val receivedBitmap: Bitmap? = intent.getParcelableExtra("image_bitmap")
    

Ο καλύτερος τρόπος για ανταλλαγή φωτογραφιών μεταξύ εφαρμογών είναι η χρήση URI με δικαιώματα ανάγνωσης (FLAG_GRANT_READ_URI_PERMISSION), ειδικά αν τα αρχεία πολυμέσων βρίσκονται στην αποθήκευση. Η άμεση μεταφορά Bitmap μέσω Extra ταιριάζει μόνο για πολύ μικρές εικόνες ή προεπισκοπήσεις.