验证是否有App去接收这个Intent

Posted 天津大学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证是否有App去接收这个Intent相关的知识,希望对你有一定的参考价值。

尽管android系统会确保每一个确定的intent会被系统内置的app(such as the Phone, Email, or Calendar app)之一接收,但是我们还是应该在触发一个intent之前做验证是否有App接受这个intent的步骤。

Caution: 如果触发了一个intent,而且没有任何一个app会去接收这个intent,则app会crash。

为了验证是否有合适的activity会响应这个intent,需要执行queryIntentActivities() 来获取到能够接收这个intent的所有activity的list。若返回的List非空,那么我们才可以安全的使用这个intent。例如:

PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;

如果isIntentSafetrue, 那么至少有一个app可以响应这个intent。false则说明没有app可以handle这个intent。

我们必须在第一次使用之前做这个检查,若是不可行,则应该关闭这个功能。如果知道某个确切的app能够handle这个intent,我们也可以向用户提供下载该app的链接。

以上是关于验证是否有App去接收这个Intent的主要内容,如果未能解决你的问题,请参考以下文章

android接受不到开机广播

从广播接收器更改片段

从广播接收器更新片段中的列表视图

使用 SmsRetriever 时接收广播 Intent 时出错

谈一谈 Android 嵌套 Intent 以及解决方案

谈一谈 Android 嵌套 Intent 以及解决方案