Content Provider的临时权限访问(FLAG_GRANT_READ_URI_PERMISSION)

kimxydsy 2012-11-18 03:08:48
已实现了从App1访问App2的content provider(CP).
然后,App2为CP加上自定义权限后,App1只要有此权限也能访问.
<provider android:authorities="com.ck.contentprovider.MyContentProvider"
android:name="com.ck.contentprovider.MyContentProvider"
android:readPermission="android.permission.permRead"
android:writePermission="android.permission.permWrite"
android:grantUriPermissions="true">
</provider>

但intent中有个flag是FLAG_GRANT_READ_URI_PERMISSION, 据官方介绍可以把URI的临时访问权限传给receiver.所以我去掉App1中请求的权限android.permission.permRead,而让App2发个intent给App1,包括URI和此flag为“true”.
Intent sendIntent = new Intent();
sendIntent.setAction("android.intent.action.VIEW");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.putExtra("name", uri2.toString());
sendIntent.setType("text/plain");

但结果还是缺少权限,不能访问。(不论是explicit intent还是implicit intent)
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.web/com.android.web.Provid}: java.lang.SecurityException: Permission Denial: opening provider com.ck.contentprovider.MyContentProvider from ProcessRecord{426c6ea8 17032:com.android.web/u0a95} (pid=17032, uid=10095) requires android.permission.permRead or android.permission.permWrite

请哪位做过的大牛指点一下,万分感激!
...全文
1795 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
superltj 2014-10-21
  • 打赏
  • 举报
回复
App1对应的manifest文件加声明权限了么?如果没有建议加 <uses-permission android:name="android.permission.permRead" /> <uses-permission android:name="android.permission.permWrite" />

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧