gpt4 book ai didi

android - 如何让 Launcher-Pick-Up 弹出窗口显示出来?

转载 作者:太空狗 更新时间:2023-10-29 16:39:28 24 4
gpt4 key购买 nike

我安装了 Launcher 应用程序。并且用户已选择另一个启动器作为默认启动器,这意味着当按 HOME 时,默认启动器将出现在前面。

我想为用户提供重置默认启动器的便利。例如,在我的启动器的 UI 中单击按钮将使 Launcher-Pick-Up 弹出窗口显示。

Go Launcher 可以做到这一点(在 Go 的设置 View 中)。似乎 Go Launcher 会执行类似“PackageManager.clearPackagePreferredActivities("com.android.launcher")”之类的操作来清除首选启动器 Activity !

如何实现?

最佳答案

出于安全问题,启动器只能清除自己的首选设置。

这里有一个解决方法:

在 Manifest.xml 中注册一个模型 Activity :

   <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>

使用“PackageManager.setComponentEnabledSetting”触发操作系统清除当前首选启动器:

    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);
}

这就是我的做法!享受吧!

关于android - 如何让 Launcher-Pick-Up 弹出窗口显示出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com