我正在尝试使用其他阅读器应用程序(如 Google Drive PDF 查看器等)从我的应用程序中打开 PDF 或文本文件。但它显示以下错误。
java.lang.SecurityException: Permission Denial: opening provider com.my.app.provider.GenericFileProvider from ProcessRecord{87fdcbb 31761:com.google.android.apps.docs/u0a37} (pid=31761, uid=10037) that is not exported from uid 10081
清单文件:
<provider
android:name="com.my.app.provider.GenericFileProvider"
android:authorities="${applicationId}.my.package.name.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
provider_paths 文件:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
String mimeType = myMime.getMimeTypeFromExtension(ChatAdapterHelper.Document.getDocumentExtension(message.content));
String authority = AppContext.getAccess().getContext().getPackageName() + ".my.package.name.provider";
Uri fileUri = GenericFileProvider.getUriForFile(AppContext.getAccess().getContext(), authority, file);
Log.d("fileUri", "openDocument: fileUri " + fileUri);
intent.setDataAndType(fileUri, mimeType);
Intent chooser = Intent.createChooser(intent, context.getString(R.string.open_file_with));
chooser.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
chooser.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
chooser.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
AppContext.getAccess().getContext().startActivity(chooser);
SDK版本:
minSdkVersion 16
targetSdkVersion 27
我正在尝试按照 Android 开发者网站和其他论坛帖子中解释的使用内容提供程序的过程,但这里不知道有什么问题!