验证是否有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;
如果isIntentSafe
为true
, 那么至少有一个app可以响应这个intent。false
则说明没有app可以handle这个intent。
我们必须在第一次使用之前做这个检查,若是不可行,则应该关闭这个功能。如果知道某个确切的app能够handle这个intent,我们也可以向用户提供下载该app的链接。
以上是关于验证是否有App去接收这个Intent的主要内容,如果未能解决你的问题,请参考以下文章