TGViewer
Kotlin | Вопросы собесов Kotlin | Вопросы собесов @easy_kotlin · 2.45K subscribers
Post #2180 356
🤔 Как бы передавал фотографию в редактор?

Передача фото в редактор зависит от типа редактора:
1. Внешний редактор (например, Google Photos, Snapseed).
2. Встроенный редактор внутри приложения.

🚩Передача фото во внешний редактор (Intent)

Если редактор — другое приложение, используем Intent.ACTION_EDIT.
Как передать фото в редактор?
fun openPhotoEditor(context: Context, uri: Uri) {
val intent = Intent(Intent.ACTION_EDIT).apply {
setDataAndType(uri, "image/*")
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Разрешение на чтение
}
context.startActivity(Intent.createChooser(intent, "Выберите редактор"))
}


🚩Передача в `Activity` своего приложения (FileProvider)

Если редактор — внутри приложения, можно передавать фото через Intent с Uri.
Отправка фото в редактор
fun openEditor(context: Context, photoFile: File) {
val uri = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", photoFile)

val intent = Intent(context, PhotoEditorActivity::class.java).apply {
putExtra("PHOTO_URI", uri.toString())
}

context.startActivity(intent)
}


Получение фото в редакторе (PhotoEditorActivity)
class PhotoEditorActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val uriString = intent.getStringExtra("PHOTO_URI")
val uri = uriString?.let { Uri.parse(it) }

uri?.let {
imageView.setImageURI(it) // Показываем фото
}
}
}


🚩Если фото приходит в `byte[]` (с сервера)

Если фото уже в памяти (byte[]), можно передать его как Parcelable.
Отправка
val bitmap = ... // Получили Bitmap
val byteArray = ByteArrayOutputStream().apply {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, this)
}.toByteArray()

val intent = Intent(context, PhotoEditorActivity::class.java).apply {
putExtra("PHOTO_BYTES", byteArray)
}

context.startActivity(intent)


Получение
val byteArray = intent.getByteArrayExtra("PHOTO_BYTES")
byteArray?.let {
val bitmap = BitmapFactory.decodeByteArray(it, 0, it.size)
imageView.setImageBitmap(bitmap)
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
  • 💊 1
More from @easy_kotlin
  1. Oct 10, 2026🤔 Какое событие вызывается при нажатии юзера по экрану? В Android при нажатии пользовател…
  2. Oct 9, 2026🤔 В чем разница между linked list и array list? Являются двумя различными типами коллекци…
  3. Oct 8, 2026🤔 Для проектов в которых есть несколько модулей, там может быть много Android Manifest'ов…
  4. Oct 7, 2026🤔 Что такое ProGuard? ProGuard — это инструмент для: - Минификации (сжатие имён классов,…
  5. Oct 7, 2026🤔 Расскажи подробно, что из себя представляет каждый компонент Аndroid-приложения? Androi…
  6. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Android разработчика, которые нигде больше не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →