Junior
Μπορείτε να μεταφέρετε μια φωτογραφία μέσω ενός Intent;
sobes.tech AI
Απάντηση από AI
Ναι, είναι δυνατό.
-
Μεταφορά 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, "Κοινοποίηση εικόνας")) -
Μεταφορά 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 ταιριάζει μόνο για πολύ μικρές εικόνες ή προεπισκοπήσεις.