открыть андроид собственный лаунчер из моего приложения - PullRequest
4 голосов
/ 15 декабря 2011

привет Прошло 2 дня в поисках этой простой проблемы. Я хочу запустить собственную программу запуска Android из моего приложения ДАЖЕ, если она не установлена ​​по умолчанию.

   final PackageManager packageManager=getPackageManager();
   Intent intent = packageManager.getLaunchIntentForPackage("com.android.launcher");

это возвращаемое значение NULL для собственной программы запуска Android, но если я попробую пользовательскую программу запуска, дайте мне успешно

Ответы [ 2 ]

11 голосов
/ 29 декабря 2011

Нашел решение, изучив исходный код getLaunchIntentForPackage .Согласно документации,

Текущая реализация будет сначала искать основное действие в категории CATEGORY_INFO, затем основное действие в категории CATEGORY_LAUNCHER или возвращать ноль, если ничего не найдено.1007 *

Итак, функция не ищет CATEGORY_HOME, я переписал ее следующим образом, она отлично работала.

Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_HOME);
intentToResolve.setPackage("com.android.launcher");
ResolveInfo ri = getPackageManager().resolveActivity(intentToResolve, 0);
if (ri != null) 
{
    Intent intent = new Intent(intentToResolve);
    intent.setClassName(ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
}
1 голос
/ 15 декабря 2011

Вы уверены, что по умолчанию Google Android Launcher устанавливается на ваше устройство?Если нет, то это действительно NULL.

...