Android 如何使启动器拾取弹出窗口显示?
我安装了一个启动器应用程序。用户已经选择了另一个启动器作为默认启动器,这意味着当按下HOME键时,默认启动器将出现在前面 我想为用户提供重置默认启动器的便利。例如,在我的launcher的UI中单击一个按钮将使launcher拾取弹出窗口显示 GoLauncher可以做到这一点(在Go的设置视图中)。Go Launcher似乎做了类似“PackageManager.clearPackagePreferredActivities(“com.android.Launcher”)的事情来清除首选的Launcher活动Android 如何使启动器拾取弹出窗口显示?,android,android-launcher,Android,Android Launcher,我安装了一个启动器应用程序。用户已经选择了另一个启动器作为默认启动器,这意味着当按下HOME键时,默认启动器将出现在前面 我想为用户提供重置默认启动器的便利。例如,在我的launcher的UI中单击一个按钮将使launcher拾取弹出窗口显示 GoLauncher可以做到这一点(在Go的设置视图中)。Go Launcher似乎做了类似“PackageManager.clearPackagePreferredActivities(“com.android.Launcher”)的事情来清除首选的La
如何实现这一点?启动器只能清除其自身的首选安全设置 以下是一个解决方法: 在Manifest.xml中注册实体模型活动:
<activity
android:name="MockupLauncher"
android:enabled="false"
android:exported="false"
android:excludeFromRecents="true"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
我就是这样做的!享受吧 为什么这对你有用。清单列出了两个系统权限作为要求。
private void resetPreferedLauncher() {
PackageManager pm = mContext.getPackageManager();
ComponentName mockupComponent = new ComponentName(MockupLauncher.class.getPackage().getName(), MockupLauncher.class.getName());
pm.setComponentEnabledSetting(mockupComponent, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(startMain);
pm.setComponentEnabledSetting(mockupComponent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
// or
//pm.setComponentEnabledSetting(mockupComponent, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}