如何撤消clearPackagePreferredActivities(“com.android.launcher”);

时间:2011-08-03 22:14:34

标签: android

我想要做的是复制ToddlerLock应用程序的功能。我已设法用

清除默认启动器
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); 

只要用户检查“此操作默认使用”,主页键现在会将用户发送到我的应用程序,从而基本上禁用它。
然后,当我退出应用程序并且用户必须选择新的默认家庭应用程序时,我使用“clearPackagePreferredActivities(”com.my_application“)”。

我的问题是如何选择默认的主应用程序(实质上是在“com.android.launcher”包的代码中选中“默认使用此操作”复选框。这样用户就不会经常每次打开和关闭我的应用程序时都会看到该对话框。

我认为ToddlerLock在不使用clearPackagePreferredActivities的情况下以某种方式执行此操作 因为如果我查看应用程序管理器中的“清除默认值”,它就不会被清除,您只需要在启动时一次通过设置为默认对话框,并在退出时将其设置回正常主屏幕。

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

我以不同的方式实现了相同的功能。

  • 假设您在“清单”中将“LockScreenAcitivity”配置为“主屏幕”。
  • 通过发送Home Intent启动LockScreenActivity。
  • Android将弹出一个对话框,以选择默认的Acitivity
  • 从List中选择LockScreenActivity作为默认活动
  • .....
  • .....
  • 关闭活动时,不要清除首选的活动。
  • 通过调用PackageManager.setComponentEnabledSetting()
  • 来单独禁用LockScreenActivity
  • 禁用LockScreenActivity后,android将回滚​​到之前的首选活动(这是您的旧主屏幕)。

下次启动应用时,

  • 通过调用PackageManager.setComponentEnabledSetting()
  • 再次启用lockscreenActivity
  • 通过发送Home Intent启动LockScreenActivity。