我要做的是复制幼童锁应用程序的功能。我已经用

PackageManager localPackageManager = getPackageManager();
localPackageManager.clearPackagePreferredActivities("com.android.launcher");

然后打开“启动选择”对话框
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);

只要用户选中“Use by default for this action”(默认使用此操作),Home键就会将用户发送到我的应用程序,从而基本上禁用它。
然后,当我退出我的应用程序并且用户必须选择一个新的默认家庭应用程序时,我使用“ClearPackagePreferredActivities(“com.my_application”)”。
我的问题是如何选择默认的家庭应用程序(基本上选中“com.android.launcher”包代码中的“Usebydefuldtheaction”复选框)。这样,用户不必每次打开和关闭我的应用程序时都看到该对话框。
我认为幼童在不使用clearpackagepreferredactivities的情况下这样做
因为如果我查看应用程序管理器中的“清除默认值”,它不会被清除,而且您只需在启动时和退出时通过一次“设置为默认值”对话框即可将其设置回正常主屏幕。
谢谢你的帮助。

最佳答案

我以不同的方式实现了相同的功能。
假设您在清单中将“lockscreeenacivity”配置为主屏幕。
通过发送回家意图启动lockscreenactivity。
Android将弹出一个对话框,以选择默认活动
从列表中选择LockScreenActivity作为默认活动


关闭活动时不清除首选的活动。
通过调用packagemanager.setcomponentenabledseting()单独禁用LockScreenActivity
禁用lockscreenactivity后,android将回滚到以前的首选活动(这是您以前的主屏幕)。
下次启动应用程序时,
通过调用packagemanager.setcomponentenabledset()再次启用LockScreenActivity
通过发送回家意图启动lockscreenactivity。

09-25 22:23