編輯:關於android開發
public class AntivirusActivity extends Activity {
TextView tv_init_virus;
ProgressBar pb;
Message msg;
ImageView iv_scanning;
LinearLayout ll_content;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initUI();
initData();
}
static class ScanInfo{
boolean desc;
String appname;
String packagename;
}
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch(msg.what){
case 1:
tv_init_virus.setText("初始化八核殺毒引擎");
break;
case 2:
//病毒掃描中
TextView child = new TextView(AntivirusActivity.this);
ScanInfo scaninfo = (ScanInfo) msg.obj;
if(scaninfo.desc){//true表示有病毒
child.setTextColor(Color.RED);
child.setText(scaninfo.appname+"有病毒");
}else{
child.setTextColor(Color.BLACK);
child.setText(scaninfo.appname+"掃描安全");
}
ll_content.addView(child);
break;
case 3:
//當掃描結束的時候,停止動畫。
iv_scanning.clearAnimation();
break;
}
};
};
public void initData(){
new Thread(){
public void run(){
// //獲取手機裡面所有的應用程序
// List<AppInfo> appinfos = AppInfos.getAppInfos(AntivirusActivity.this);
// //迭代手機上邊所有的軟件
// for(AppInfo appinfo:appinfos){
// String name = appinfo.getApkname();
// }
msg = Message.obtain();
msg.what = 1;//初始化病毒
PackageManager packageManager = getPackageManager();
List<PackageInfo> installPackages = packageManager.getInstalledPackages(0);
int size = installPackages.size();
pb.setMax(size);
int progress = 0 ;
for(PackageInfo packageinfo:installPackages){
//獲取當前手機上app的名字
String appname = packageinfo.applicationInfo.loadLabel(packageManager).toString();
//首先需要獲取到每個應用程序的位置
String sourceDir = packageinfo.applicationInfo.sourceDir;
ScanInfo scaninfo = new ScanInfo();
scaninfo.appname = appname;
scaninfo.packagename = packageinfo.applicationInfo.packageName;
//MD5是病毒特征碼,得到應用程序的MD5值
String md5 = null;
try {
md5 = MD5Utils.getFileMd5(sourceDir);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String desc = AntivirusDao.checkFileVirus(md5);
if(desc == null){
scaninfo.desc = false;
}else{
//這裡有病毒
scaninfo.desc = true;
}
progress++;
pb.setProgress(progress);
msg = Message.obtain();
msg.what = 2;//正在浏覽
msg.obj = scaninfo;
handler.sendMessage(msg);
//判斷當前的文件是否在病毒數據庫中?
}
msg = Message.obtain();
msg.what = 3;//結束
handler.sendMessage(msg);
}
}.start();
}
public void initUI(){
setContentView(R.layout.activity_antivirus);
iv_scanning = (ImageView) findViewById(R.id.iv_scanning);
ll_content = (LinearLayout) findViewById(R.id.ll_content);
tv_init_virus = (TextView) findViewById(R.id.tv_init_virus);
pb = (ProgressBar) findViewById(R.id.progressBar1);
/**
* fromDegrees 開始的角度
* toDegrees 結束的角度
* pivotXType 參照自己
* pivotXValue
* pivotYType
* pivotYValue
* 初始化旋轉動畫
*/
RotateAnimation rotationmation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
rotationmation.setDuration(5000);
//rotationmation.setRepeatMode(-1);
rotationmation.setRepeatCount(-1);
iv_scanning.startAnimation(rotationmation);
}
}
AntivirusDao.java
public class AntivirusDao {
//檢查當前MD5是否在數據庫中
public static String checkFileVirus(String md5){
String desc = null;
SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.mxn.mobilesafe/files/antivirus.db", null,
SQLiteDatabase.OPEN_READONLY);
//查詢
Cursor cursor = db.rawQuery("select desc from datable where md5 = ?", new String[]{md5});
if(cursor.moveToNext()){
cursor.getString(0);
}
return desc;
}
//添加病毒數據庫
public static void adddVirus(String md5,String desc){
SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.mxn.mobilesafe/files/antivirus.db",
null, SQLiteDatabase.OPEN_READONLY);
ContentValues values = new ContentValues();
values.put("md5", md5);
values.put("desc", desc);
values.put("type", 6);
values.put("name", "Android.Adware.AirAD.a");
db.insert("datable", null, values);
db.close();
}
}
activity_antivirus.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
style="@style/TitleStyle"
android:text="病毒查殺"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="horizontal" >
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_scanner_malware"
/>
<ImageView
android:id="@+id/iv_scanning"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/act_scanning_03"
/>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="5dp"
>
<TextView
android:id="@+id/tv_init_virus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="初始化8核殺毒引擎"
/>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressBar1"
></ProgressBar>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
></LinearLayout>
</LinearLayout>
http://www.bkjia.com/Androidjc/1192071.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/1192071.htmlTechArticle手機安全衛士——病毒查殺,安全衛士病毒查殺 public class AntivirusActivity extends Activity { TextView tv_init_virus; ProgressBar pb; Message msg; ImageView iv_...
Toast顯示圖文界面——Android開發之路1,toastandroid
Toast顯示圖文界面——Android開發之路1,toastandroidToast的多種使用方法 Toast其實是一個功能特別強大的組件,不僅僅可以吐司
一步一步實現listview加載的性能優化,listview性能優化
一步一步實現listview加載的性能優化,listview性能優化listview加載的核心是其adapter,本文針對listview加載的性能優化就是對adpter
android WebView控件顯示網頁,androidwebview
android WebView控件顯示網頁,androidwebview有時需要app裡面顯示網頁,而不調用其他浏覽器浏覽網頁,那麼這時就需要WebView控件。這個控件
國外干貨!6個方法助你設計出優秀的APP,干貨app
國外干貨!6個方法助你設計出優秀的APP,干貨app偉大的設計來源於一致性和細致化,而其實只要有足夠的紀律,每個團隊都可以實現這一點。 品牌(源碼:http://www.