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) // წაკითხვის უფლებების მიცემა } startActivity(Intent.createChooser(shareIntent, "სურათის გაზიარება")) -
Bitmap-ის გადაცემა (დიდი სურათებისთვის არ არის რეკომენდებული): შესაძლებელია serialize-ოთ Bitmap და ჩასვათ Extra-ში. თუმცა, ეს არ არის რეკომენდებული დიდი სურათებისთვის, რადგან Intent-ის extras-ის ზომის შეზღუდვები (საშუალოდ 1 მბ-მდე) და 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-ის მეშვეობით მხოლოდ ძალიან პატარა სურათებისთვის ან მინატურებისთვის არის შესაფერისი.