private void scanner() {
final PackageManager pm=getPackageManager();
//要获取应用签名 参数必须 PackageManager.GET_SIGNATURES
final List<PackageInfo> installedPackages = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);
//耗时操作放在线程
new Thread(){
public void run(){
pb_antivirus_progressbar.setMax(installedPackages.size());
tv_antivirus_text.setText("正在初始化...");
int count=0;
for (final PackageInfo packageInfo : installedPackages) {
SystemClock.sleep(100);
pb_antivirus_progressbar.setProgress(count);
final String name = packageInfo.applicationInfo.loadLabel(pm).toString();
//这个方法在ui线程即主线程操作
runOnUiThread(new Runnable() {
public void run() {
tv_antivirus_text.setText("正在扫描"+name);
//获取应用在签名的数组
Signature[] signatures=packageInfo.signatures;
String string = signatures[0].toCharsString();
//md5加密
String utilMD5 = MD5util.utilMD5(string);
System.out.println(utilMD5);
TextView textView=new TextView(getApplicationContext());
textView.setText(name);
textView.setTextColor(Color.BLACK);
ll_antivirus.addView(textView, 0);
}
});
count++;
}
//扫描完成
runOnUiThread(new Runnable() {
public void run() {
tv_antivirus_text.setText("扫描完成");
iv_antivirus_scanner.clearAnimation();
}
});
}
}.start();
}