我想检测我的启动器应用是否是默认启动器,如果没有提示让用户选择我的应用作为默认启动器。我面临的问题是提示出现时没有选项" Just Once"和"永远"。此外,在我的启动器应用程序上选择不会设置默认值。
在我的onCreate中,我有以下检查以查看我的应用程序是否是默认启动器,然后我启动了一个有意图的对话框,以便用户可以选择我的应用程序作为默认启动器。
if (!isMyAppLauncherDefault()) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Set as default to enable Kiosk Mode"));
}
以下是检查我的应用是否为默认启动器的方法
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();
// You can use name of your package here as third argument
packageManager.getPreferredActivities(filters, activities, null);
for (ComponentName activity : activities) {
if (myPackageName.equals(activity.getPackageName())) {
return true;
}
}
return false;
}
注意:我尝试更改启动意图的方式(请参阅下面的代码段)。但那时发射器根本没有出现。什么都没发生。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
如何显示ALWAYS按钮,以及如何设置实际的默认启动器设置。提前谢谢!
答案 0 :(得分:7)
我面临的问题是提示出现时没有“Just Once”和“Always”选项。
createChooser()
正在导致 - 这是专为一次性选择器设计的,没有选择默认设置。移除createChooser()
来电,然后使用您构建的Intent
。如果没有默认启动器,则用户将获得带有“Just Once”和“Always”选项的标准选择器。
但请注意,如果另一个启动器是默认启动器,那么您的Intent
将只路由到该启动器。在这种情况下,您无法做任何事情,除了为用户提供指导以进入“设置”并删除其与该应用的默认关联。