我最近设置了我的Android应用程序以接收Intents,因此它可用于打开电子邮件应用程序中的附件。
当我的应用程序在创建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"
,解决问题的方法是创建一个中间活动来处理意图。
该修复确实对我有用,但我想了解为什么我的原始Activity似乎有权在创建来处理Intent时读取URI,但不是当恢复来处理意图时。
有人可以帮我解释一下吗?
答案 0 :(得分:1)
您需要在READ_GMAIL
中添加manifest
权限。
<uses-permission android:name="com.google.android.gm.permission.READ_GMAIL" />