我的应用中有提供商
<provider android:authorities="com.myapp.android.provider" android:exported="false" android:name="com.myapp.android.provider.FileSystemProvider">
<grant-uri-permission android:pathPrefix="/"/>
</provider>
当我打电话给以下意图时:
Intent intent = new Intent();
intent.setClassName(getPackageName(), "com.myapp.android.CameraActivity");
intent.setData(Uri.parse("content://com.myapp.android.provider/"));
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
我得到例外
引起:java.lang.SecurityException:Permission Denial:start 意图{dat = content://com.myapp.android.provider/ flg = 0xc3 cmp = com ........ / com .........(有额外的)}来自 ProcessRecord {44955bc0 9477:com ..... / u0a260}(pid = 9477, uid = 10260)未从uid 10261导出
我做错了什么?我试图指定文件或不同目录的完整路径,但它从未起作用。
答案 0 :(得分:0)
<provider android:authorities="com.myapp.android.provider"
android:exported="true"<----- change android:name="com.myapp.android.provider.FileSystemProvider">
<grant-uri-permission android:pathPrefix="/"/>
</provider>
答案 1 :(得分:0)
intent.setClassName(getPackageName(), "com.myapp.android.CameraActivity");
最有可能的是,这不是您应用中的实际代码行;你的真实代码是指定其他应用程序。无论如何,此组件不会导出,因此您无法从应用程序访问它。