Как перенаправить пользователя на панель запуска по умолчанию в приложении для Android? - PullRequest
3 голосов
/ 20 марта 2012

Прошло много времени с тех пор, как я пытался понять, как разработать приложение для экрана разблокировки Android, работающее с аутентификацией NFC. Я работаю с Nexus S. После нескольких исследований в Интернете я пришел к выводу, что замена экрана блокировки в качестве стороннего приложения просто сейчас не поддерживается и что нам нужно изменить платформу, чтобы обеспечить достойную реализацию.

По этой причине я разработал приложение для домашнего экрана, которое создает иллюзию приложения для разблокировки экрана. Но моя проблема в том, что в конце процедуры я бы хотел перенаправить на стандартный лаучер.

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

Intent goHome = new Intent();
i.setAction("android.intent.action.MAIN");
i.addCategory("android.intent.category.HOME");
startActivity(goHome);

Итак, я попробовал использовать приведенный ниже код, но он не работает.

Intent goHome = new Intent(Intent.ACTION_MAIN);
goHome.setClassName("com.android.launcher", "com.android.launcher.Launcher");
startActivity(goHome);

Я получаю следующий logCat

Невозможно найти явный класс активности (com.android.launcher.laucher)

У вас есть идеи, почему это не работает? Это правильный способ сделать это?

Ответы [ 3 ]

7 голосов
/ 10 мая 2013

Использование:

    PackageManager pm = getPackageManager();
    Intent i = new Intent("android.intent.action.MAIN");
    i.addCategory("android.intent.category.HOME");
    List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
    if (lst != null) {
       for (ResolveInfo resolveInfo : lst) {
           try {
           Intent home = new Intent("android.intent.action.MAIN");
           home.addCategory("android.intent.category.HOME");
           home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
           startActivity(home);
           break;
           } catch (Throwable t) {
               t.printStackTrace();
           }
       }
    }
2 голосов
/ 20 марта 2012

попробуйте это:

goHome.setClassName("com.android.launcher", "com.android.launcher2.Launcher");
0 голосов
/ 14 февраля 2013

Если у вас устройство Samsung, у меня работает следующий код:

Intent goHome = new Intent(Intent.ACTION_MAIN);
        goHome.setClassName("com.sec.android.app.launcher", "com.android.launcher2.Launcher");
        startActivity(goHome);
...