У меня есть файл PDF, которым я пытаюсь поделиться через Intent.ACTION_SEND. Хотя, когда я нажимаю на один из вариантов (Gmail, Google Drive и т. Д.). Там написано: «Запрос не содержит данных».
** Обновлен код ниже
case R.id.share_item:
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("application/pdf");
shareIntent.putExtra(Intent.EXTRA_STREAM, displayedFile.getAbsolutePath());
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share PDF using.."));
return true;
}
Я предполагаю, что проблема должна быть с моим putExtra? Тем не менее, URL для моего файла определенно работает, потому что я могу успешно использовать этот путь для печати PDF-файлов.
Edit:
Я обновил свой код, чуть-чуть.
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("application/pdf");
Uri uri = Uri.parse(displayedFile.getAbsolutePath());
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share PDF using.."));
Это возвращает меня к "формат файла не принят" из Whatsapp и "Невозможно прикрепить файл" из Gmail.
Хотите знать, связана ли проблема с вызовом из внутреннего хранилища или с использованием FileProvider?
Редактировать 2:
Попытка добавить этот код, но я получаю сбой
Uri outputPdfUri = FileProvider.getUriForFile(this,
PdfViewActivity.this.getPackageName() + ".provider", sharingFile);
Я также добавил это в свой манифест и file_paths
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.androidextensiontest.files"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>