如何确定哪个应用程序是特定操作的默认应用程序?例如我想知道哪个应用程序用于拨打电话或接收短信。有什么方法可以以编程方式找出哪个应用程序设置为默认应用程序?
PackageManager.resolveActivity会按照您正在寻找的内容执行某些操作。来自官方文档:
确定针对给定意图执行的最佳操作。如果未显式指定类,这就是resolveActivity(PackageManager) 查找活动的方式。
这是一个例子:
Intent i = (new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com")));
PackageManager pm = context.getPackageManager();
final ResolveInfo mInfo = pm.resolveActivity(i, 0);
Toast.makeText(
context,
pm.getApplicationLabel(mInfo.activityInfo.applicationInfo),
Toast.LENGTH_LONG
).show();
Run Code Online (Sandbox Code Playgroud)
请注意,返回值有些模糊:
返回包含被确定为最佳操作的最终活动意图的 ResolveInfo。如果未找到匹配的活动,则返回 null。如果找到多个匹配的活动并且没有默认集,则返回包含其他内容(例如活动解析器)的 ResolveInfo。
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |