使用意图启动默认应用程序

时间:2010-08-23 17:22:14

标签: android android-intent default package messages

如何在android中启动应用程序集作为默认设置(即用于消息传递的Handcent,用于浏览的Dolphin)?

我只能找到如何为意图使用明确的包名称:

Intent i = new Intent(Intent.ACTION_MAIN);
        i.addCategory(Intent.CATEGORY_LAUNCHER);

        switch (position) {
        case 0: //messages
            i.setPackage("com.android.mms");
            break;
        case 1: //inbox
            i.setPackage("com.android.email");
            break;
        case 2: //browser
            i.setPackage("com.android.browser");
        default:
            i = null;
        }

2 个答案:

答案 0 :(得分:2)

  

如何在android中启动应用程序集作为默认设置(即用于消息传递的Handcent,用于浏览的Dolphin)?

“默认”用于特定操作(例如,发送消息),而不是一般的“消息”概念。

此外,您在上面显示的代码使用SDK中不存在的内容(即特定包)。您的代码将在设备制造商更换应用程序的某些设备上中断。当股票应用程序被重构或以其他方式重命名时,您的代码可能会在Android的未来版本中中断。

我认为你需要重新考虑你想要实现的目标。

答案 1 :(得分:1)

您可以搜索满足给定Intent的应用程序(例如,ACTION_SEND),确定您想要的应用程序,检索其组件名称,然后使用指定组件名称的其他Intent启动它。

开始于:

Intent intent = new Intent(...);
List<ResolveInfo> list = getPackageManager().queryIntentActivities(
    intent, PackageManager.MATCH_DEFAULT_ONLY);