Android Studio android PackageManager.DONT_KILL_APP似乎不起作用

tktrz96b  于 2023-08-07  发布在  Android
关注(0)|答案(2)|浏览(143)

在我最近的项目中,我通过使用COMPONENT_ENABLED_STATE_DISABLED标志来隐藏应用程序图标。在这里你可以看到代码:

PackageManager packageManager = SettingsActivity.this.getPackageManager();
ComponentName componentName = new ComponentName(SettingsActivity.this, MainScreen.class);

packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

字符串
当用户按下checkBox时启动。但是每次10-15秒后,应用程序都会突然停止。没有错误或信息。
我不明白,因为我已经使用了DONT_KILL_APP标志。
有什么建议吗?

ulmd4ohb

ulmd4ohb1#

首先获取您的应用程序包名称:

String packageName = activity.getPackageName();

字符串
然后使用您必须在清单文件中定义的名称设置clsDefault

<activity-alias
            android:name=".HomeScreen-Default"...>

public static String clsDefault = packageName + ".HomeScreen-Default";


然后使用此设置图标。

activity.getPackageManager().setComponentEnabledSetting(new ComponentName(packageName, clsDefault ),
                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

r8uurelv

r8uurelv2#

似乎有了这个解决方案(使用活动别名),他们解决了更改图标时应用程序关闭的问题。
https://blog.jakelee.co.uk/programmatically-changing-app-icon/
这家伙还分享了一个似乎有效的解决方案
https://github.com/gonodono/app-icon-change-demo
在这两个例子中,你都需要使用来更改应用程序图标,并且对于Android中缺少的功能来说,这一直是一个有点笨拙的解决方案,而这种特定方法的唯一结果是能够在每次不重新启动整个应用程序的情况下实现切换。它仍然具有基本技术一直具有的相同警告和故障行为,包括:
你不能改变任何别名的名字后,第一次发布。
启动器应用程序可能不会立即响应组件切换,可能需要几分钟才能更新。
启动器应用程序可能只是删除某些快捷方式,而不是更新/替换它们。等等

相关问题