如何在Android应用程序中将用户重定向到默认启动器?

时间:2012-03-20 13:24:25

标签: android android-activity launcher homescreen

自从我试图找出如何开发使用NFC身份验证的Android解锁屏幕应用程序以来,已经有很长一段时间了。我正在使用Nexus S. 经过对互联网的多次研究,我得出的结论是,现在不支持将锁屏替换为第三方应用程序,我们需要修改平台以进行体面的实施。

这就是为什么我开发了一个主屏幕应用程序,给出了解锁屏幕应用程序的错觉。但我的问题是我希望在程序结束时重定向到默认的laucher。

我首先尝试使用下面的代码,但问题是我可以在默认主屏幕和新应用之间进行选择

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 个答案:

答案 0 :(得分:6)

使用:

    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();
           }
       }
    }

答案 1 :(得分:2)

试试这个:

goHome.setClassName("com.android.launcher", "com.android.launcher2.Launcher");

答案 2 :(得分:0)

如果您有三星设备,以下代码适用于我:

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