android intent singletask,android - 为什么打开Intent时launchMode:singleTask会导致SecurityException? - 堆栈内存溢出...

我最近将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()

这篇网络文章表明问题是我的活动设置了android:launchMode="singleTask" ,解决问题的方法是创建一个中间活动来处理Intent。

该修复程序确实对我有用,但是我想了解为什么原始的Activity在创建以处理Intent时似乎具有从URI读取的权限,而在恢复处理Intent时却没有读取权限。

谁能为我解释一下?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值