Какие знаешь способы передачи информации об изображении между приложениями

«Какие знаешь способы передачи информации об изображении между приложениями» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android можно передавать изображения между приложениями несколькими способами:

  1. Intent с EXTRA_STREAM – через Intent.ACTION_SEND:
val intent = Intent(Intent.ACTION_SEND).apply {
    type = "image/*"
    putExtra(Intent.EXTRA_STREAM, uri)
    flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
}
startActivity(Intent.createChooser(intent, "Share image"))
  1. ContentProvider – для доступа к файлам через URI с временными разрешениями (FLAG_GRANT_READ_URI_PERMISSION).

  2. FileProvider – безопасная передача файлов между приложениями:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.example.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. ClipData – через буфер обмена:
val clipData = ClipData.newUri(contentResolver, "Image", uri)
clipboardManager.setPrimaryClip(clipData)
  1. Прямая передача байтов через Socket, Bluetooth или другие IPC-механизмы (редко используется для изображений).