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检测Chromebook上的锁定解锁事件

我可以检测 Android 是不是从 Notification Intent / PendingIntent 中终止了应用程序(任务进程)吗?

Android之Intent

Android 插件化VAHunt 检测插件化引擎的具体细节

为什么默认需加android.intent.category.DEFAULT

检测耳机插入和拔出