Поделиться изображением просмотра изображений с намерением в Kotlin - PullRequest
0 голосов
/ 27 октября 2018

У меня есть опция в моем приложении, которая позволяет делиться изображением с WhatsApp, Facebook и т. Д. Для общего доступа к изображению через намерение я хочу, чтобы из вида изображения было выбрано определенное изображение, на котором нажата кнопка «Поделиться». У меня есть следующий код, который не работает. Он разделяет пустой файл с WhatsApp.

    val shareBtn = findViewById<TextView>(R.id.share_btn)
    val postImage = findViewById<ImageView>(R.id.post_image)

    val path:String?=postImage.tag.toString()
    val file= File(path)

    shareBtn.setOnClickListener {

        val intent = Intent(Intent.ACTION_SEND)
        intent.type = "image"
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file))
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        startActivity(Intent.createChooser(intent, "Share Image"))

1 Ответ

0 голосов
/ 27 октября 2018

Сначала для хранения изображения ImageView необходимо преобразовать в Bitmap

val bitMap : Bitmap =imageview.getDrawingCache();

теперь сохраните это изображение в файл

val bos : ByteArrayOutputStream = ByteArrayOutputStream();
bitMap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
val  file : File =  File(Environment.getExternalStorageDirectory() + File.separator + "your_file.jpg");
try {
    file.createNewFile();
    val fos : FileOutputStream = FileOutputStream(file);
    fos.write(bos.toByteArray());
} catch (IOException e) {                       
        e.printStackTrace();
}

теперь создайте намерение, указав тип 'image / jpeg' и установка дополнительного потока и пути к файлу, который должен быть предоставлен для общего доступа

val intent= new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/your_file.jpg"));

И запустите Activity, создав chooser

startActivity(Intent.createChooser(intent, "Share Image"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...