android實現卸載提示

       這篇文章是整理的以前用過的一個功能,由於多種原因現在停用了,也希望這篇文章能幫助一些android入門的小童鞋。android是不提供監控卸載自己的功能的,這裏使用了監控android日誌的功能,android日誌相關知識可以參考adb logcat 查看日誌這篇文章。

        android卸載提示的思路是啓動一個服務監控android系統的打印日誌,當監控到"android.intent.action.DELETE"並且包含自己應用的包名時,提示給用戶。

監控代碼

public class AndroidLogcatScannerThread extends Thread {     private LogcatObserver observer;     public AndroidLogcatScannerThread(LogcatObserver observer) {             this.observer = observer;     }      public void run() {             String[] cmds = { "logcat", "-c" };             String shellCmd = "logcat";             Process process = null;             InputStream is = null;             DataInputStream dis = null;             String line = "";             Runtime runtime = Runtime.getRuntime();             try {                     observer.handleLog(line);                     int waitValue;                     waitValue = runtime.exec(cmds).waitFor();                     observer.handleLog("waitValue=" + waitValue + "\n Has do Clear logcat cache.");                     process = runtime.exec(shellCmd);                     is = process.getInputStream();                     dis = new DataInputStream(is);                     while ((line = dis.readLine()) != null) {                     	//Log.d("Log","Log.Bestpay:"+line);                     	                     	if(observer!=null)                             observer.handleLog(line);                                                    }             } catch (InterruptedException e) {                     e.printStackTrace();             } catch (IOException ie) {                     ie.printStackTrace();             } finally {                     try {                             if (dis != null) {                                     dis.close();                             }                             if (is != null) {                                     is.close();                             }                             if (process != null) {                                     process.destroy();                             }                     } catch (Exception e) {                             e.printStackTrace();                     }             }     } }

監控服務:

public class AndroidLogcatScannerService extends Service implements LogcatObserver{  	@Override 	public void onCreate() { 		// TODO Auto-generated method stub 		super.onCreate(); 	}  	@Override 	public void onDestroy() { 		// TODO Auto-generated method stub 		super.onDestroy(); 	}  	@Override 	public void onStart(Intent intent, int startId) { 		// TODO Auto-generated method stub 		super.onStart(intent, startId); 		 		AndroidLogcatScannerThread scannerThread=new AndroidLogcatScannerThread(AndroidLogcatScannerService.this); 		scannerThread.start(); 	}  	@Override 	public IBinder onBind(Intent intent) { 		// TODO Auto-generated method stub 		return null; 	}  	@Override 	public void handleLog(String info) { 		// TODO Auto-generated method stub 		if (info.contains("android.intent.action.DELETE") && info.contains(getPackageName())) {  	            Intent intent = new Intent(); 	            intent.setClass(AndroidLogcatScannerService.this, UninstallActivity.class); 	            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 	            startActivity(intent);         } 	}  }

上面的代碼基本實現了卸載提示,最後不要忘了權限:

<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>

代碼下載地址:

http://download.csdn.net/detail/xyz_lmn/4904797


 /**
* @author 張興業
* 郵箱:xy-zhang#163.com
* android開發進階羣:278401545
http://blog.csdn.net/xyz_lmn
*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章