android - 以编程方式重置默认启动器
问题描述
开发一个将自己设置为默认启动器的家长控制应用程序(通过向用户展示打开选择器并始终选择)。用户可以通过单击操作栏上的退出图标来退出应用程序。
退出时,它应该重置默认启动器,而不向用户显示选择器屏幕。
如何将某个应用设置为过去用户批准的默认启动器?Playstore 中的一些应用程序已经能够做到这一点。
解决方案
不是理想的解决方案。但是,这可能有助于解决问题。
检查您的应用程序是否是默认启动器:
private boolean isMyAppLauncherDefault() {
final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filter);
final String myPackageName = getPackageName();
List<ComponentName> activities = new ArrayList<ComponentName>();
final PackageManager packageManager = (PackageManager) getPackageManager();
packageManager.getPreferredActivities(filters, activities, null);
for (ComponentName activity : activities) {
if (myPackageName.equals(activity.getPackageName())) {
return true;
}
}
return false;
}
提示用户选择他们的默认启动器作为您的启动器:
private void launchAppChooser() {
Log.d(TAG, "launchAppChooser()");
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
推荐阅读
- c++ - MySQL 一张表必须至少有一列
- python - 访问 URL 会打开 2 个页面(在两个选项卡中),我希望能够选择两个页面之一
- ios - 如何在 Swift 中截断不需要的浮点精度?
- reactjs - 为什么即使我修改了草稿,Immer 也没有给我返回一个新的状态?
- swift - 无法从 textField 输入测量转换值,出现各种错误
- multithreading - 线程是在 CPU 还是核心上运行?
- php - 有没有办法从 Angular 中的对象附加 FormData 键/值?
- javascript - 单击 .app 后 Node.Js 子进程不会启动,但如果从 unix 可执行文件运行时会启动
- python - 无论如何我能找到我的手指放在python触控板上的位置吗
- c# - 在 Xamarin Forms 中获取 SelectedItem 值时,选择器错误“指定的转换无效”