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