Android Launcher隐藏指定应用的启动图标
来源:互联网 发布:java项目开发四个步骤 编辑:程序博客网 时间:2024/05/18 11:15
我们常常在工作中遇到这样一个需求,要在Launcher中隐藏某个应用的启动图标(如预装的输入法、动态壁纸等等)。完成这个需求,首先要了解Launcher加载应用启动图标的过程。以Android4.4为例,Launcher3加载应用图标在LauncherModel.java中完成,来看LauncherModel.java中loadAllApps()方法的一段代码:
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<ResolveInfo> 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的
<category android:name="android.intent.category.LAUNCHER" />
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 Launcher隐藏指定应用的启动图标
- 在Android隐藏launcher应用图标由其他应用启动
- 在Android隐藏launcher应用图标由其他应用启动
- Android关于隐藏launcher中应用程序图标并由其他应用统一启动的功能
- Android Launcher3 隐藏指定应用图标
- 如何从Launcher中隐藏应用图标?
- android开发之Launcher icon(启动图标)的设计
- 如何隐藏android应用程序的启动图标
- 隐藏android应用图标
- android应用隐藏图标
- Android隐藏应用图标
- 一个隐藏android应用图标的方法
- Android子应用内嵌启动另一个程序图标隐藏的实现方式
- Android 两个应用之间跳转 和隐藏引用的启动图标
- Android 4.0 修改Launcher 应用图标文字大小
- 如何隐藏android应用图标?
- Android隐藏app应用图标
- Android 显示/隐藏 应用图标
- Activity的生命周期
- hdu 1515,zoj 1004 Anagrams by Stack
- 为什么V8引擎这么快?
- 小感悟
- Density of Power Network
- Android Launcher隐藏指定应用的启动图标
- NYOJ 596 谁是最好的Coder
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- Implement strStr()
- 精通Hibernate——Hibernate核心接口
- iOS编程:学习篇(八)
- CSS 之float
- 股票学习(技术04)
- minisat 安装指南