我有一个试图通过 Intent.ACTION_SEND 共享的 PDF 文件。虽然当我点击其中一个选项(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。
编辑:我已经稍微更新了我的代码。
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);
我也将此添加到我的 Manifest 和 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>