在android4.4中,如果想要隐藏掉手机中在launcher的图标,据我所知的方法为两中,具体如下做记录。
1. 源代码中的package文件夹下的Launcher下的AppsCustomizePagedView.java中在AppsCustomizePagedView.java中建立方法
private void hideAppAtLauncher(ArrayList<ApplicationInfo> list) {
if (LauncherApplication.LAUNCHER_HIDE_HOMELOCATION) {
for (int i = 0; i < list.size(); ++i) {
if (list.get(i) == null || list.get(i).componentName == null) {
continue;
}
String packageName = list.get(i).componentName.getPackageName();
if (packageName != null && packageName.contains(HOMELOCATION_PACKAGE_NAME)) {
list.remove(i);
}
}
}
}
具体修改在方法里面即可,如只想要显示某一个应用 其他全部不显示那么就可以这样做。
在方法中添加一个ArrayList ArrayList<ApplicationInfo> newList = new ArrayList<ApplicationInfo>();
之后获取手机中所有应用的包名:String packageName = appInfo.componentName.getPackageName();
获取包名之后,可以增加判断
if (packageName != null) {
if (packageName.equals("com.***.***")
|| packageName.startsWith("com.***.***")) {
newList.add(appInfo);
}
之后清空List 并将需要现实的添加即可
list.clear();
for(int j = 0; j < newList.size(); ++j) {
list.add(newList.get(j));
}
2.第二中方法:
可以直接在values中的String.xml中添加一个 string-array数组,如:
/**
*参照源代码
*/
<string-array name="white_app_list">
<item>Sort by alphabet</item>
<item>Sort by favorite</item>
</string-array>
同样在此类中此方法中,遍历此数组之后在过滤显示
String packageName = appInfo.componentName.getPackageName();
final String[] items = getResources().getStringArray(R.array.white_app_list);
if (packageName !=null) {
for (int j = 0; j < items.length; j++) {
if(packageName.contains(items[j])){
newList.add(appInfo);
}
}
}
参照添加到上述代码中即可。