这篇文章是整理的以前用过的一个功能,由于多种原因现在停用了,也希望这篇文章能帮助一些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.intent.action.DELETE"并且包含自己应用的包名时,提示给用户。 采用...
安卓手机(android)wifi传送文件源码可以实现一个android手机之间 , 手机和PC 之间 可以通过wifi相互传文件的程序 。亲测可用 :) 程序分为 android手机端的 apk 和 Pc端的 exe 两个 文件 。 程序会自己建立一个...
功能:展示所有应用程序,单击图标打开,长按图标震动一下,并在图标的左上方出现一个删除图标,用户再单击时就会提示卸载应用程序(没有实现卸载)。
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和...
1.4 软件管理 软件管理实现对软件的管理,包括系统软件和用户软件,包含软件的卸载 程序。 5. 任务管理 任务管理实现对系统内存中的进程进行动态监控,满足用户对无响应占资 源的进程结束机制。但不允许用户结束...
9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找应用 224 9.17、注册一个BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、...
9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找应用 224 9.17、注册一个BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、...
在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒。但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但...
如果没有root权限,您仍然可以比使用本机android实现更快地删除多个应用程序。 但是,系统会提示您卸载每个应用程序。 非root用户不能卸载系统应用程序。 这是Android操作系统的限制。 特征 一次卸载多个应用 按...
Shell的方式执行ADB相关命令,实现获取设备信息、投屏控制、全功能通用刷机、高速文件传输、微信/QQ文件提取备份、软件批量安装、预装应用卸载等功能 将复杂的操作简单化、自动化,使安卓高级操作上手更加容易 二. ...
|--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--...
11 支持直接更新或者卸载手机应用 注意:本源码不带服务端源码 项目内所有数据直接在机锋网获取 本项目源码为商业源码 售价50专家币 以下截图是项目编译后的工程截图 截图中的功能都已经实现 识货的朋友可以在后台...
注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。 基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s ] 如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,...
具有语法突出显示和提示的 可自定义文本编辑器,能够查看源Java代码,并能够导入自己的代码突出显示主题。 具有许多功能的 便捷文件管理器。 使用各种类型的安装文件-* .apk,* .apks,* .xapk,* .apkm。 反分裂 ...
在Android 4.1及以上版本中,可以通过激活绿色守护提供的『辅助功能』模块实现手动休眠操作的自动代劳,不必再反复点击。 重要说明:『绿色化』一个应用,意味着您确确实实希望这个应用在不启动的时候休眠,也就是说...
是一个专注于提供出版书籍阅读的网站,其提供的内容较为精良,但是因为官方并不提供 Android 客户端,亦没有相关的 Api 接口,所以自己使用 Nodejs 简单的实现了一个仅仅包含最基本功能的简陋 Api,来方便令其它 App...
2. 从v1.5.0开始将不再支持Android 1.5版的手机,因为后续要实现的功能必须Android 1.6以上才行,所以还望在用Android 1.5版手机的机友见谅。 【疑问解答】 1. 为什么会访问网络,会不会偷偷上传用户的账户记录信息...
2. 从v1.5.0开始将不再支持Android 1.5版的手机,因为后续要实现的功能必须Android 1.6以上才行,所以还望在用Android 1.5版手机的机友见谅。 【疑问解答】 1. 为什么会访问网络,会不会偷偷上传用户的账户记录信息...