Android隐藏应用桌面图标/动态修改桌面图标
应用启动后点击隐藏
注意:在Android11只要在mainifest有权限申请,就不会隐藏
private void hide() {PackageManager packageManager = getPackageManager();packageManager.setComponentEnabledSetting(getComponentName(),PONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);}
此方式可隐藏桌面图标,即Luncher里看不到应用icon和label,并且后台也看不到,只能手动停止 或卸载,手机管家可清理,启动后进程正常运行,后台日志正常输出
安装后直接隐藏
manifest中配置
<uses-featureandroid:name="android.software.leanback"android:required="true" />
启动页的下配置
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
完整配置如下示例:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.luncherdemo"><uses-featureandroid:name="android.software.leanback"android:required="true" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.LuncherDemo"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LEANBACK_LAUNCHER"/><!--<category android:name="android.intent.category.LAUNCHER" />--></intent-filter></activity></application></manifest>
此种配置,应用安装后能看到页面,后台也可见,桌面无图标,但是杀死进程后无法再次手动启动app
动态修改应用图标 icon 和 lable
1、清单文件增加权限
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
2、下增加一个
<activity-aliasandroid:icon="@mipmap/alias_icon"//新的iconandroid:label="@string/app_name2"//新的labelandroid:name="changeAfterActivity" //和MainAcitivity同路径android:targetActivity=".MainActivity" //targetActivity 和启动页是同一个activityandroid:enabled="false"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity-alias>
完整代码:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.luncherdemo"><!-- <uses-feature--><!-- android:name="android.software.leanback"--><!-- android:required="true" />--><uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.LuncherDemo"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><!--<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>--><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity-aliasandroid:icon="@drawable/ic_home_light"android:label="@string/app_name2"android:name="changeAfter"android:targetActivity=".MainActivity"android:enabled="false"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity-alias></application></manifest>
//3调用private void chaneIcon() {PackageManager packageManager = getPackageManager();//显示别名的设置packageManager.setComponentEnabledSetting(new ComponentName(this, "com.example.luncherdemo.changeAfter"),PONENT_ENABLED_STATE_ENABLED ,PackageManager.DONT_KILL_APP);//disable 掉原来的设置packageManager.setComponentEnabledSetting(new ComponentName(this, "com.example.luncherdemo.MainActivity"),PONENT_ENABLED_STATE_DISABLED ,PackageManager.DONT_KILL_APP);}
这样就能动态修改 lable和icon了