【Android】如何寻找出某个Intent是否可用(queryIntentActivities)
时间: 2023-11-28 12:49:42 浏览: 29
Android提供了一个PackageManager类,可以用它来查询当前设备上是否有某个Intent可以被处理。其中一个方便的方法是queryIntentActivities(),它可以用来查询可以处理指定Intent的所有Activity。
示例代码:
```java
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
if (activities.size() > 0) {
// 可以处理该Intent
// do something...
} else {
// 不能处理该Intent
// do something else...
}
```
以上代码创建了一个发送文本的Intent,然后使用PackageManager查询可以处理该Intent的所有Activity。如果有至少一个Activity能够处理该Intent,那么就可以执行相应的操作。否则,可以执行其他的操作。
注意:在使用PackageManager查询Intent时,需要传入标志参数。这个参数用于控制查询的深度。如果设置为0,则只查询当前应用程序的组件;如果设置为PackageManager.GET_RESOLVED_FILTER,则查询所有已知的组件,但是不会执行任何操作;如果设置为PackageManager.GET_ACTIVITIES,则只查询活动组件。