这篇文章是整理的以前用过的一个功能,由于多种原因现在停用了,也希望这篇文章能帮助一些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{@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic void onStart(Intent intent, int startId) {// TODO Auto-generated method stubsuper.onStart(intent, startId);AndroidLogcatScannerThread scannerThread=new AndroidLogcatScannerThread(AndroidLogcatScannerService.this);scannerThread.start();}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void handleLog(String info) {// TODO Auto-generated method stubif (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

* http://blog.csdn.net/xyz_lmn * http://www.cnblogs.com/xyzlmn/ * iOS入门群:83702688
* android开发进阶群:241395671 * 我的新浪微博:@张兴业TBOW * 我的邮箱:xy-zhang#163.com#->@) */

更多相关文章

  1. android 实现静默安装、卸载(图)
  2. Android设备管理器漏洞
  3. android安装和卸载程序
  4. 简单的Android日志文件记录类
  5. Android(安卓)登录界面xml代码
  6. android 程序日志记录
  7. android Log.isLoggable步骤的使用
  8. Android(安卓)使用ADB命令安装、卸载软件
  9. android Log.isLoggable步骤的使用

随机推荐

  1. 解决Error running app:Instant Run requ
  2. [原]Ubuntu 14.04编译Android Kernel
  3. Android学习能力之统计日志上传设计
  4. android 项目中接入flutter模块(部分页面
  5. Android–手掌中的王者?
  6. Android优秀开源项目(一)
  7. Android AOSP源码下载编译
  8. Android编译错误:You have tried to chang
  9. android 开发中中,经常用到的代码
  10. Android AndBox 安安卜1.3发布