这篇文章是整理的以前用过的一个功能,由于多种原因现在停用了,也希望这篇文章能帮助一些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
*/

更多相关文章

  1. android实现卸载提示
  2. Android(安卓)JNI打印c\c++日志信息
  3. android 静默安装、卸载实现
  4. Android(安卓)Studio升级3.2以后 Androidx 异常总结
  5. Android的日志系统分层与logcat使用
  6. 写了个android简洁的日志打印工具类。
  7. android 日志文件输出
  8. Android单元测试和日志输出
  9. android 安装和卸载程序

随机推荐

  1. Java乔晓松-android的四大组件之一Servic
  2. Android之Adapter系列之SimpleAdapter类
  3. 搭建Android开发环境
  4. Android带头像的用户注册页面
  5. android监控来电显示
  6. Android开发之常用代码片段
  7. android 2.3 电源管理
  8. android 超简单的下载功能,进度条 异步下
  9. Android(安卓)Studio里面的Build.gradle
  10. Android(安卓)WebView加载H5音视频自动播