---------------------------------------------------------------------
编译环境: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();点击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;
}
}
原文:http://blog.csdn.net/tangnengwu/article/details/38232601