【发布时间】:2014-02-27 11:23:26
【问题描述】:
我最近将我的 Android 应用设置为接收 Intent,这样它就可以用来打开电子邮件应用中的附件。
当我的应用程序在创建 Intent 时尚未运行时,这可以正常工作,但是当我的应用程序在后台暂停时,尝试从 URI 读取内容会导致抛出 SecurityExceptions:
E/AndroidRuntime(28250): java.lang.RuntimeException: Unable to resume activity
{com.[...]/com.[...].Main}: java.lang.SecurityException: Permission Denial:
reading com.google.android.gm.provider.MailProvider uri content://gmail-ls/
notateme@gmail.com/messages/134/attachments/0.1/BEST/false from pid=28250,
uid=10205 requires com.google.android.gm.permission.READ_GMAIL, or
grantUriPermission()
E/AndroidRuntime(28250): Caused by: java.lang.SecurityException: Permission
Denial: reading com.google.android.gm.provider.MailProvider uri content://
gmail-ls/notateme@gmail.com/messages/134/attachments/0.1/BEST/false from
pid=28250, uid=10205 requires com.google.android.gm.permission.READ_GMAIL,
or grantUriPermission()
This web post 表明问题是我的活动设置了android:launchMode="singleTask",解决问题的方法是创建一个中间活动来处理 Intent。
该修复确实对我有用,但我想了解为什么我的原始 Activity 在 创建 以处理 Intent 时似乎有权从 URI 读取,但没有何时恢复处理 Intent。
谁能帮我解释一下?
【问题讨论】:
标签: android android-intent securityexception