Я пытаюсь поделиться изображением через неявное намерение. Изображение успешно передается через Messenger и Twitter, но не получается в ленте новостей Facebook, Viber и электронной почте. Я где-то читал, что перед отправкой нужно сохранить изображение на внешнюю или внутреннюю SD-карту. Я немного не понимаю, 1) как сохранить изображение на SD-карту и 2) как указать новое местоположение изображения на SD-карте, чтобы поделиться им. В настоящее время мой код для обмена изображением выглядит так:
Button share = findViewById(R.id.sharetoapps);
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("android.resource://com.testing.mypic/drawable/bad_day");
intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM,uri);
intent.setType("image/png");
startActivity(Intent.createChooser(intent, "share to:"));
}
});
И мой xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/sharetoapps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="share" />
</LinearLayout>
Если у вас есть какие-либо указатели или вы знаете какие-либо соответствующие учебные пособия, я был бы признателен.
EXTRA_STREAM
не должен иметьUri
со схемойandroid.resource
. Предполагается наличиеcontent
схемы. Скопируйте свой ресурс в файл (например, вgetCacheDir()
), затем используйтеFileProvider
и его методgetUriForFile()
, чтобы получить доступ кcontent
Uri
. Не забудьте также добавитьFLAG_GRANT_READ_URI_PERMISSION
кIntent
. Подробнее об обмене контентом в Android см. в документации. - person CommonsWare   schedule 08.06.2020assets/
, а неres/drawable/
в подобных ситуациях. Это приложение Java (и его аналог Kotlin) демонстрируют копирование PDF изassets/
в файл, а затем с помощьюFileProvider
иACTION_VIEW
отобразить его. Эти примеры описаны в этой книге. - person CommonsWare   schedule 09.06.2020