乌里不被许可给供应商的路径
问题描述:
我有一个供应商在我的应用程序乌里不被许可给供应商的路径
<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:权限拒绝:启动 意图{dat = content://com.myapp.android.provider/ flg = 0xc3 cmp = com ......../com .........(has extras)} from ProcessRecord {44955bc0 9477:com ...../u0a260}(pid = 9477, uid = 10260)未从uid导出10261
我做错了什么?我试图指定一个文件或不同目录的完整路径,但它从来没有工作。
答
intent.setClassName(getPackageName(), "com.myapp.android.CameraActivity");
最有可能的,这不是实际代码行是在您的应用程序;你的真实代码是指定一些其他应用程序。无论如何,这个组件不会被导出,因此您无法从您的应用程序访问它。
答
<provider android:authorities="com.myapp.android.provider"
android:exported="true"<----- change android:name="com.myapp.android.provider.FileSystemProvider">
<grant-uri-permission android:pathPrefix="/"/>
</provider>
+0
我想保留它不导出给任何人。只需授予特定路径 –
但是为什么?我授予访问 –
Android文档的说法:'如果内容提供者的grantUriPermissions属性为“true”,则可以为提供者的权限下的任何数据授予权限。但是,如果该属性为“false”,则只能将权限授予由此元素指定的数据子集。提供者可以包含任意数量的元素。每个人只能指定一个路径(只有三种可能的属性之一)。# –
@SteveWarner:您授予访问“Uri”的权限。该活动位于其他人的应用中,并且该活动未导出。 – CommonsWare