如何确定哪个应用程序是特定操作的默认应用程序?例如,我想知道哪个应用程序用于拨打电话或接收短信。有没有办法找出哪个应用程序以编程方式设置为默认值?
答案 0 :(得分:3)
resolveActivity会按照您正在寻找的内容做一些事情。来自官方文档:
确定要对给定Intent执行的最佳操作。这是怎么回事 如果类没有,resolveActivity(PackageManager)会查找活动 明确指定。
这里是example:
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();
请注意,返回值有些模糊:
返回包含最终活动意图的ResolveInfo 决心成为最好的行动。如果没有匹配活动,则返回null 被找到。如果找到多个匹配活动但没有 默认设置,返回包含其他内容的ResolveInfo,例如 活动解析器。
答案 1 :(得分:1)
使用Intent Filters和resolveActivity()。
From Android's documentation on Intent Filters:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType(HTTP.PLAIN_TEXT_TYPE); // "text/plain" MIME type
ComponentName compName = sendIntent.resolveActivity();