android icon hide,Android Launcher隐藏指定应用的启动图标
我們常常在工作中遇到這樣一個需求,要在Launcher中隱藏某個應用的啟動圖標(如預裝的輸入法、動態(tài)壁紙等等)。完成這個需求,首先要了解Launcher加載應用啟動圖標的過程。以Android4.4為例,Launcher3加載應用圖標在LauncherModel.java中完成,來看LauncherModel.java中l(wèi)oadAllApps()方法的一段代碼:
final PackageManager packageManager = mContext.getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// Clear the list of apps
mBgAllAppsList.clear();
// Query for the set of apps
final long qiaTime = DEBUG_LOADERS ? SystemClock.uptimeMillis() : 0;
List apps = packageManager.queryIntentActivities(mainIntent, 0);
......//省略無關代碼
// Create the ApplicationInfos
for (int i = 0; i < apps.size(); i++) {
ResolveInfo app = apps.get(i);
// This builds the icon bitmaps.
mBgAllAppsList.add(new AppInfo(packageManager, app,
mIconCache, mLabelCache));
}
這樣一看清晰了吧。根據以上代碼,我們知道Launcher是通過指定的Intent,更確切的說是intent-filter來加載應用圖標的,所以我們可以這樣來隱藏圖標:
1、有源代碼的應用程序,直接修改AndroidManifest.xml文件,刪掉所有Activity中intent-filter的
2、沒有源代碼的應用,修改loadAllApps()方法:
//數組array_hide_app_icon中是所有需要隱藏圖標的應用的包名和類名。
//例如隱藏撥號:com.android.dialer/.DialtactsActivity
String[] hideAppIconArray = mContext.getResources().getStringArray(R.array.array_hide_app_icon);
// Create the ApplicationInfos
for (int i = 0; i < apps.size(); i++) {
ResolveInfo app = apps.get(i);
//過濾掉需要隱藏的應用
StringBuilder sb = new StringBuilder();
ComponentName componentName = getComponentNameFromResolveInfo(app);
String shortClassName = componentName.getShortClassName();
String packageName = componentName.getPackageName();
String shortComponentName = sb.append(packageName).append('/')
.append(shortClassName).toString();
boolean needHide = false;
for (String str : hideAppIconArray ){
if (str != null && str.equals(shortComponentName) ){
needHide = true;
}
}
if(needHide){
apps.remove(i);
continue;
}
// This builds the icon bitmaps.
mBgAllAppsList.add(new AppInfo(packageManager, app,
mIconCache, null));
這樣修改后我們就可以隱藏指定應用的啟動圖標了,以后如果有其它需要隱藏的應用直接在arrays.xml的array_hide_app_icon中添加應用的包名和類名即可。
總結
以上是生活随笔為你收集整理的android icon hide,Android Launcher隐藏指定应用的启动图标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 全屏截图实现方法
- 下一篇: 联想小新v1000电脑开机不久出现彩色竖