`
hsapphire
  • 浏览: 15645 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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
*/

分享到:
评论

相关推荐

    启动一个服务监控android系统的打印日志--实现卸载软件提示

    启动一个服务监控android系统的打印日志--实现卸载软件提示 android卸载提示的思路是启动一个服务监控android系统的打印日志,当监控到"android.intent.action.DELETE"并且包含自己应用的包名时,提示给用户。 采用...

    安卓手机(android)wifi传送文件源码.zip

    安卓手机(android)wifi传送文件源码可以实现一个android手机之间 , 手机和PC 之间 可以通过wifi相互传文件的程序 。亲测可用 :) 程序分为 android手机端的 apk 和 Pc端的 exe 两个 文件 。 程序会自己建立一个...

    android Launcher源码

    功能:展示所有应用程序,单击图标打开,长按图标震动一下,并在图标的左上方出现一个删除图标,用户再单击时就会提示卸载应用程序(没有实现卸载)。

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android手机安全卫士

    1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和...

    Android程序设计课程报告.doc

    1.4 软件管理 软件管理实现对软件的管理,包括系统软件和用户软件,包含软件的卸载 程序。 5. 任务管理 任务管理实现对系统内存中的进程进行动态监控,满足用户对无响应占资 源的进程结束机制。但不允许用户结束...

    Android开发资料合集-World版!

    9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找应用 224 9.17、注册一个BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、...

    Android 开发技巧

    9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找应用 224 9.17、注册一个BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、...

    Android 桌面图标右上角显示未读消息数字

    在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒。但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但...

    Batch-Uninstaller:适用于Android的Batch Uninstaller应用程序(可在有根电话和无根电话上使用)

    如果没有root权限,您仍然可以比使用本机android实现更快地删除多个应用程序。 但是,系统会提示您卸载每个应用程序。 非root用户不能卸载系统应用程序。 这是Android操作系统的限制。 特征 一次卸载多个应用 按...

    java安卓辅助源码-Android_Tool_Box:Android_Tool_Box

    Shell的方式执行ADB相关命令,实现获取设备信息、投屏控制、全功能通用刷机、高速文件传输、微信/QQ文件提取备份、软件批量安装、预装应用卸载等功能 将复杂的操作简单化、自动化,使安卓高级操作上手更加容易 二. ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--...

    Android应用源码完整功能版机锋安卓市场

    11 支持直接更新或者卸载手机应用 注意:本源码不带服务端源码 项目内所有数据直接在机锋网获取 本项目源码为商业源码 售价50专家币 以下截图是项目编译后的工程截图 截图中的功能都已经实现 识货的朋友可以在后台...

    adb1.0.26包含fastboot.exe

    注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。 基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s ] 如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,...

    apktoolmv2.4.0_downcc.com.apk

    具有语法突出显示和提示的 可自定义文本编辑器,能够查看源Java代码,并能够导入自己的代码突出显示主题。 具有许多功能的 便捷文件管理器。 使用各种类型的安装文件-* .apk,* .apks,* .xapk,* .apkm。 反分裂 ...

    绿色守护 greenify v 2.5.2 Beta1

    在Android 4.1及以上版本中,可以通过激活绿色守护提供的『辅助功能』模块实现手动休眠操作的自动代劳,不必再反复点击。 重要说明:『绿色化』一个应用,意味着您确确实实希望这个应用在不启动的时候休眠,也就是说...

    99lib-api:九九藏书网非官方内容解析接口

    是一个专注于提供出版书籍阅读的网站,其提供的内容较为精良,但是因为官方并不提供 Android 客户端,亦没有相关的 Api 接口,所以自己使用 Nodejs 简单的实现了一个仅仅包含最基本功能的简陋 Api,来方便令其它 App...

    密码管家 - 最强大的密码管理助手

    2. 从v1.5.0开始将不再支持Android 1.5版的手机,因为后续要实现的功能必须Android 1.6以上才行,所以还望在用Android 1.5版手机的机友见谅。 【疑问解答】 1. 为什么会访问网络,会不会偷偷上传用户的账户记录信息...

    密码管家 - 最强大的密码管理助手(2012年2月2日重新上传v2.5.0)

    2. 从v1.5.0开始将不再支持Android 1.5版的手机,因为后续要实现的功能必须Android 1.6以上才行,所以还望在用Android 1.5版手机的机友见谅。 【疑问解答】 1. 为什么会访问网络,会不会偷偷上传用户的账户记录信息...

Global site tag (gtag.js) - Google Analytics