Android Intent 默认值 - 检测并清除
Posted
技术标签:
【中文标题】Android Intent 默认值 - 检测并清除【英文标题】:Android Intent defaults - detect and clear 【发布时间】:2011-01-12 23:56:55 【问题描述】:有没有一种方法可以检测手机是否选择了用于意图的默认应用程序,例如android.intent.action.SEND
?
有没有办法通过代码清除默认应用?
我想给用户一个选项来删除默认设置,或者至少显示一个屏幕告诉他们如何手动操作,如果我能检测到的话。
【问题讨论】:
【参考方案1】:看看PackageManager。有了它,您可以确定如何使用 resolveActivity(intent) 处理 Intent。看来清除偏好的方法(clearPackagePreferredActivities)只对你自己的包有效。
【讨论】:
看起来你在正确的轨道上,但还有很多。我回家后必须研究这个。谢谢。 嗯,我能够使用这种方法检测到缺少默认活动。如果没有选择默认值,基本上我会得到“com.android.internal.app.ResolverActivity”。所以它起作用了,但我必须按字符串进行比较,鉴于活动名称可能会改变,我不确定这是一种有前途的方法。谢谢! @user432209,我想你可以使用resolveActivity(intent, MATCH_DEFAULT_ONLY)
来避免字符串比较。
我使用两步检测默认值:queryIntentActivities 获取 Intent 的所有活动,resolveActivity 得到解决。如果解决的一个在 queryIntentActivities 返回的列表中,则不会有“使用完成操作”对话框,因此设置了“默认”活动。
@PointerNull 这应该是一个单独的答案,因为它是正确的。【参考方案2】:
使用两步检测默认值:
PackageManager.queryIntentActivities
获取 Intent 的所有活动,PackageManager.resolveActivity
得到解决。
如果已解决的问题在queryIntentActivities
返回的列表中,则不会出现“使用完成操作”对话框,因此设置了“默认”活动。
【讨论】:
以上是关于Android Intent 默认值 - 检测并清除的主要内容,如果未能解决你的问题,请参考以下文章
我可以检测 Android 是不是从 Notification Intent / PendingIntent 中终止了应用程序(任务进程)吗?
Android 插件化VAHunt 检测插件化引擎的具体细节