---------------------------------------------------------------------
编译环境:Android 4.0
测试环境:Android 4.2.2模拟器
屏幕分辨率:480*800
作者:疯狂小强
注意:
1.资源采集于网上,如有侵权请及时联系,以便处理。
2.代码仅用于学习交流,请勿商业化。
--------------------------------------------------------------------
仿360一键清理实现(一)已经介绍了“一键清理”过程的实现,本节介绍白名单编辑。
先上效果图:
关键就是获取APP的信息
获取到信息后就简单了。
代码如下:
private List<AppItem> getAppItem() { List<AppItem> appList = new ArrayList<AppItem>(); //用来存储获取的应用信息数据 List<AppItem> appListSystem = new ArrayList<AppItem>(); List<PackageInfo> packages = getPackageManager().getInstalledPackages(0); for(int i=0;i<packages.size();i++) { PackageInfo packageInfo = packages.get(i); //非系统应用加上下面条件 //packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0 if(!packageInfo.packageName.equals("android")&&!packageInfo.packageName.equals("com.tang.demo360")) { AppItem item =new AppItem(); item.setAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString()); item.setPkgName(packageInfo.packageName); item.setIcon(packageInfo.applicationInfo.loadIcon(getPackageManager())); if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0) { appList.add(item); } else { appListSystem.add(item); } } } appList.addAll(appListSystem); return appList; }
packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0是判断是否是系统应用的条件
启动一个线程负责获取数据:
new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub data = getAppItem(); handler.sendEmptyMessage(DATA_OK); } }).start();
并且用handler通知主线程更新UI.
点击ListItem后会加入白名单或者是从白名单中移除:
public class MSaveList extends ArrayList<String> { private SharedPreferences share =null; public MSaveList (SharedPreferences share) { this.share = share; } public void save() { String temp = ""; for(int i = 0;i<size(); i++) { temp =temp+get(i)+"/"; } Log.i("AAA", "save:"+temp); SharedPreferences.Editor editor = share.edit(); editor.putString("white_list", temp); editor.commit(); } public List<String> load() { String temp = share.getString("white_list", ""); if(temp.equals("")) return null; String s[] = temp.split("/"); Log.i("AAA", "load:"+temp); for(int i = 0;i<s.length;i++) { add(s[i]); } return this; } }
仿360一键清理实现(二)
时间: 2024-11-10 10:14:33