如何在安卓应用中将用户重定向到默认启动器?

3
我很久以前就开始尝试开发一个与NFC身份验证一起使用的Android解锁屏幕应用程序,我正在使用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个回答

8

使用方法:

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

我不确定为什么在我之前没有被点赞,但这是唯一对我有效的解决方案。向@user1135940致敬! - Bruce

2
尝试这个:
goHome.setClassName("com.android.launcher", "com.android.launcher2.Launcher");

@ethan_liou 我遇到错误 05-11 10:38:26.300: E/AndroidRuntime(6728): FATAL EXCEPTION: main 05-11 10:38:26.300: E/AndroidRuntime(6728): 进程: com.example.lockapplication, PID: 6728 05-11 10:38:26.300: E/AndroidRuntime(6728): android.content.ActivityNotFoundException: 在您的AndroidManifest.xml中是否声明了此活动类{com.android.launcher/com.android.launcher2.Launcher}?找不到显式活动。 - Erum

0
如果您有三星设备,以下代码适用于我:
Intent goHome = new Intent(Intent.ACTION_MAIN);
        goHome.setClassName("com.sec.android.app.launcher", "com.android.launcher2.Launcher");
        startActivity(goHome);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接