package com.example.thefinalproject;import java.util.List;import com.example.thefinalproject.R;import MD5.MD5Encoder;import android.app.Activity;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.pm.Signature;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.MotionEvent;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ProgressBar;import android.widget.ScrollView;import android.widget.TextView;public class AntiVirus extends Activity {protected static final int STOP = 100;private ImageView iv;private ProgressBar pb;private LinearLayout ll;private AnimationDrawable anim;private ScrollView sv;private SQLiteDatabase db;private boolean flagscanning = false;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg); if(msg.what==STOP){     ll.removeAllViews(); anim.stop();  }String str = (String) msg.obj; TextView tv = new TextView(getApplicationContext()); tv.setText(str); ll.setOrientation(LinearLayout.VERTICAL); ll.addView(tv); sv.scrollBy(0, 20);System.out.println(str);}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.antivirus_screen);db = SQLiteDatabase.openDatabase("/sdcard/antivirus.db", null,SQLiteDatabase.OPEN_READONLY);iv = (ImageView) this.findViewById(R.id.iv);pb = (ProgressBar) this.findViewById(R.id.progressBar1);ll = (LinearLayout) this.findViewById(R.id.ll);iv.setBackgroundResource(R.drawable.anti_anim);sv = (ScrollView) this.findViewById(R.id.sv);anim = (AnimationDrawable) iv.getBackground();}@Overridepublic boolean onTouchEvent(MotionEvent event) {if(flagscanning)return false;if (event.getAction() == MotionEvent.ACTION_UP) {flagscanning= true;anim.start();new Thread() {public void run() {List infos = getPackageManager().getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES| PackageManager.GET_SIGNATURES);// 获取每一个应用程序的签名 获取到这个签名后 需要在数据库里面查询pb.setMax(infos.size());int total = 0;int virustotal = 0;for (PackageInfo info : infos) {total++;try {sleep(20);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}Message msg = Message.obtain();msg.obj = "正在扫描" + info.packageName;handler.sendMessage(msg);Signature[] signs = info.signatures;String str = signs[0].toCharsString();String md5 = MD5Encoder.encode(str);if("6c20c50051ad1dedce0528e0f3dfbc96".equals(md5)){System.err.println("----------");}Cursor cursor = db.rawQuery("select desc from datable where md5=?",new String[] { md5 });if (cursor.moveToFirst()) {String desc = cursor.getString(0);msg = Message.obtain();msg.obj = info.packageName + ": " + desc;handler.sendMessage(msg);virustotal++;}cursor.close();pb.setProgress(total);}Message msg = Message.obtain();msg.what = STOP;msg.obj = "扫描完毕 ,共发现" + virustotal + "个病毒";handler.sendMessage(msg);flagscanning = false;pb.setProgress(0);};}.start();}return super.onTouchEvent(event);}@Overrideprotected void onDestroy() {if (db.isOpen())db.close();super.onDestroy();}}

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. android 获取信息和安装Apk
  3. 《Android(安卓)基础(三十三)》 TabHost ~ 仿微信底部菜单
  4. Android(安卓)之 Dialog复选框获取值
  5. Android(安卓)应用获取通知栏权限
  6. [zt]获取android联系人信息
  7. Android(安卓)对话框通知(Dialog Notification)
  8. 模拟头条
  9. Android(安卓)应用获取通知栏权限

随机推荐

  1. android 设置缓存工具类
  2. Android Studio 使用github
  3. okhttp源码学习分析一
  4. android休眠与唤醒驱动流程分析
  5. android之location01
  6. radiolog不全的问题
  7. android webview js交互 (java和js交互)
  8. 相对布局
  9. android 屏幕测试程序 测试R G B三色 和
  10. Android中Activity多页滑动切换效果(使用V