標籤:android style java get 使用 strong
自己動手清除Android系統中的不良程式
陳躍峰
2014/6/29
最近在使用我的Nexus7時,總是經常莫名其妙的彈出一些廣告彈窗,還會自動下載一些應用程式,還會在案頭上產生一個叫做“精彩應用”的表徵圖,這個捷徑關聯的程式顯示的內容和廣告內容是一致的,很是煩人,使用360手機衛士和樂安全都發現不了這個不良程式,所以就自己動手來清除這個程式。
由於Nexus 7平時用於測試程式,安裝的應用很多,手動刪除了一些可疑的應用以後還是不行,猜測是某些app可能被人篡改了,就不再去刪除app了,而把目光轉向了案頭捷徑上。
既然產生了“精彩應用”這個表徵圖,而且點擊可以啟動程式,但是安卓系統的捷徑和app之間沒有很直觀的聯絡,這就需要寫些代碼來解決了:
1、擷取捷徑對應的包名
眾所周期,每個安卓app依靠一個唯一的包名就行區分,只要能發現這個包名,剩下就簡單了。
擷取捷徑需要讀寫系統設定的許可權:
<uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permissionandroid:name="com.android.launcher.permission.WRITE_SETTINGS" />
讀取捷徑的代碼如下:
/**
* 顯示捷徑資訊
* @param context 內容物件
*/
publicstatic void printShortcutInfo(Context context){
try{
ContentResolverresolver = context.getContentResolver();
Cursor cursor = resolver.query(Uri.parse("content://com.android.launcher2.settings/favorites?notify=true"),null,null,null,null);
int index = 0;
while(cursor.moveToNext()){
intnum = 5;
try{
Stringinfo = "";
for(inti = 0;i < num;i++){
info+= cursor.getString(i) + ",";
}
System.out.println(index+++ " " + info);
}catch(Exceptione1){}
}
cursor.close();
}catch(Exceptione){
e.printStackTrace();
}
}
通過執行這些代碼,發現“精彩應用”這個捷徑對應的包名是“cn.com.hkgt.gasapp”,通過這個包名也不能直接找到對應的程式,那下面就自己編碼卸載這個程式,看看到底是哪裡出了問題。
2、根據包名卸載app
對於沒有root的程式,卸載時只是調用卸載介面,但是這個對於我來說足夠了。
卸載程式需要的許可權:
<uses-permissionandroid:name="android.permission.DELETE_PACKAGES" />
卸載程式的方法代碼:
/**
* 卸載軟體
*@param context 內容物件
*@param pkgName 包名
*/
public static void deletePackage(Contextcontext,String pkgName){
try{
Uri packageURI =Uri.parse("package:" + pkgName);
Intent uninstallIntent = newIntent(Intent.ACTION_DELETE, packageURI);
context.startActivity(uninstallIntent);
}catch(Exception e){
e.printStackTrace();
}
}
執行這個方法卸載上麵包名的程式時,終於發現是中石化營業廳程式被人篡改了,卸載該app,去他們的官網再次下載安裝app,世界終於一片清靜了。
最後發現百度應用中心和應用寶裡面提供的中石化營業廳程式都是被篡改的程式,看來以後下載和安裝app還是小心一點的好。
把自己的這一小段經曆和大家一起分享,如果大家有更好的方法也請告訴我,謝謝。連絡方式:[email protected]