Отправка изображения через мое приложение в WhatsApp

Я все, у меня есть проблема. Мне нужно отправить изображение в WhatsApp из моего приложения. Я скачал изображение в растровом формате. После конвертирую растровый формат в jpg и пытаюсь отправить изображение. Но WhatsApp не получает никаких данных.

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");

Bitmap bmp = getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);

File f = new File(getAppContext().getCacheDir() + File.separator + "temporary_file.jpg");
try {
       f.createNewFile();
       FileOutputStream fo = new FileOutputStream(f);
       fo.write(stream.toByteArray());
       fo.flush();
       fo.close();
 } catch (IOException e) {
       e.printStackTrace();
 }

 shareIntent.putExtra(Intent.EXTRA_STREAM, f.getPath());
 myShareActionProvider.setShareIntent(shareIntent);

Я вставил в манифест все разрешения. Как я могу это исправить? Спасибо.

PS. Я использую минимальный SDK 17 и максимальный SDK 24.


person apollo9    schedule 20.06.2017    source источник
comment
stackoverflow.com/a/44639312/115145   -  person CommonsWare    schedule 21.06.2017


Ответы (1)


WhatsApp не имеет доступа к каталогу, возвращаемому функцией getCacheDir(), только ваше приложение. Вместо этого попробуйте сделать это следующим образом:

File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");

Чтобы это работало, вам нужно объявить разрешение WRITE_EXTERNAL_STORAGE в файле manifest.xml. Как это:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
person Tharkius    schedule 20.06.2017
comment
Я пытаюсь создать файл, используя Environment.getExtrnalStorageDirectory(), но когда я пытаюсь создатьNewFile(), он возвращает отказ в разрешении IOException - person apollo9; 25.06.2017
comment
Поскольку вам нужно добавить разрешение WRITE_EXTERNAL_STORAGE в файл manifest.xml, я отредактирую ответ. - person Tharkius; 25.06.2017