Запуск приложений по умолчанию с намерениями - PullRequest
0 голосов
/ 23 августа 2010

Как в 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 ]

2 голосов
/ 24 августа 2010

Как в Android запустить приложение, установленное по умолчанию (например, Handcent для обмена сообщениями, Dolphin для просмотра)?

«По умолчанию» - для конкретной операции (например, отправки сообщения), а не для какого-то абстрактного понятия «Сообщения» в целом.

Кроме того, код, который вы показываете выше, использует вещи, которых нет в SDK (а именно, конкретные пакеты). Ваш код сломается на некоторых устройствах, где производитель устройства заменил приложение. Ваш код может сломаться в будущих версиях Android, когда стандартные приложения будут реорганизованы или иным образом переименованы.

Я думаю, вам нужно пересмотреть то, что вы пытаетесь достичь.

1 голос
/ 25 августа 2010

Вы можете искать приложения, которые удовлетворяют данному Намерению (например, ACTION_SEND), решить, какое из них вы хотите, получить имя его компонента, а затем запустить его с другим Намерением, которое задает имя компонента.

Начните с:

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