如何获取操作的默认应用程序

时间:2014-04-19 15:57:13

标签: android

如何确定哪个应用程序是特定操作的默认应用程序?例如,我想知道哪个应用程序用于拨打电话或接收短信。有没有办法找出哪个应用程序以编程方式设置为默认值?

2 个答案:

答案 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();

And here's the documentation on ComponentName