android实现卸载提示

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:


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



     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230756,如需转载请自行联系原作者




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
安全 Android开发
Android 预置可卸载分区接收不到任何广播问题分析和解决
Android 预置可卸载分区接收不到任何广播问题分析和解决
227 0
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
存储 Java Android开发
Android11.0(R) MTK 预置可卸载app恢复出厂不恢复(仿RK方案)
Android11.0(R) MTK 预置可卸载app恢复出厂不恢复(仿RK方案)
909 0
|
缓存 Android开发
Android 黑科技之非Root卸载系统应用
Android 黑科技之非Root卸载系统应用
153 0
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
459 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
API
RK3326 android10.0(Q) 预装APP可卸载不恢复补丁
RK3326 android10.0(Q) 预装APP可卸载不恢复补丁
349 0
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
564 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
257 0
android 多级下拉菜单实现教程 greendao使用