自从我试图找出如何开发使用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)
你知道为什么它不起作用吗?这是正确的做法吗?
答案 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);