android 

这两三天一直在研究拦截卸载的东西,目的很明显就是让应用后无法卸载!

目前我想到的主要实现方向有2个,

1.卸载前直接杀掉卸载进程

2.卸载后后台重新安装

详细分析其可行性:

1.卸载前直接杀掉卸载进程

看下图,在用户点击卸载按钮时,系统会在Logcat中打印一条信息” START {act=android.intent.action.DELETE dat=package:android.askforun cmp=com.android.packageinstaller/.UninstallerActivity} “,事件”android.intent.action.DELETE “,对象”package:android.askforun“(卸载应用的包)。

利用以上的信息,使activity开机启动并在后台运行一直监听Logcat,当出现上述关键词时立即kill掉系统卸载进程。

问题:

如何kill掉系统卸载进程?

原本我打算用killBackgroundProcesses("com.android.packageinstaller");在kill掉进程,但是这个方法并没有发挥作用,killBackgroundProcesses无法kill掉系统进程,而且在代码中结束其他进程也有十分多的限制!

具体可以看一下:http://www.cnblogs.com/crazypebble/archive/2011/04/08/2006213.html

第一个思路在结束卸载进程中卡死!

2.卸载后后台重新安装

在应用卸载完成的时候,系统的发送广播:android.intent.action.PACKAGE_REMOVED,设置BroadcastReceiver接收器,当接收到我们的应用被卸载时就调用一个activity重新安装应用。

问题:

如何安装?--静默安装/后台安装

1)

Java代码  
  1. String str = "/xx.apk";
  2. String fileName = Environment.getExternalStorageDirectory() + str;
  3. Intent intent = new Intent(Intent.ACTION_VIEW);
  4. intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
  5. startActivity(intent);
String str = "/xx.apk";
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);

认框使用类似的方法会弹出用户确认框,必须通过用户确认才能继续,这根本就无法满足需求!

2)在代码中使用pm命令安装应用--没有安装权限

3)使用隐藏的api安装--没有安装权限

上面两个方法,在运行的时候都出错,提示没有intallpackage的权限(即使你在AndroidManifest.xml中已经声明安装权限)。

网上唯一说实现静默安装的文章http://hi.baidu.com/6936995/blog/item/eca4436387a80d7b0d33fa31.html,真心看不明

还有一篇文章,实现静默安装的两种方法http://blog.csdn.net/sodino/article/details/6238818,按照博文所示要实现静默安装必须获取机子本身的签名,我认为用代码很难实现获取机子签名并对应用进行重新打包!

第二个思路在静默安装中卡死!

以上就是这几天我研究拦截卸载所遇到的问题,希望有人可以继续研究下去!

拦截android应用卸载的问题相关推荐

  1. 全网最详细的Android Studio卸载、安装和启动教程

    从2019.5.2安装Android Studio,再到2020.3.4更新Android Studio,再到2021.5.30卸载Android Studio.我内心还是很多的不舍,就和家里养的小猫 ...

  2. android studio卸载找不到uninstall

    android studio卸载找不到uninstall 今天安装配置android studio,直接从官网下的最新版,配置有问题想卸载居然发现没有uninstall文件!!! 真离谱. 不得不重新 ...

  3. 02. android studio卸载

    以下内容均已录制 查看B站视频 android studio卸载 a. 控制面板中 找到android studio 卸载时需要勾选用户配置 一并删除 b. 再找到C:\Users\用户名\AppDa ...

  4. android 滑动拦截,Android 滑动拦截实例代码解析

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package demo.hq.com.fby; import android.content.Context; import android.u ...

  5. android静默卸载,Android实践 -- Android静默安装和卸载

    App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...

  6. android 安装卸载应用提醒_Android监听程序的安装和卸载

    在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播.可以通过intent.getDataString() ...

  7. 如何将Android Studio卸载的干干净净?

    (请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 1.打开控制面板,选择"程序",在卸载或更改程序界面找到Android_Studi ...

  8. android 安装卸载应用提醒_Android程序使用代码的安装和卸载!!!

    安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...

  9. android shell卸载应用程序,android系统软件卸载_adb配置使用

    目录 一.windows 配置 adb命令 下载 Android的sdk文件,找到目录 platform-tools 配置系统环境变量 测试 adb命令 二.mac 配置 adb 命令 三.使用adb ...

最新文章

  1. [BZOJ3693]圆桌会议[霍尔定理+线段树]
  2. C语言位、字节、半字、字的概念和内存位宽
  3. QT QML 在qml中自定义信号
  4. 程序员技术进阶手册(一)
  5. C++,Java编程中 标识符 常见命名约定
  6. 智能物联网系统安全与防御【会议】
  7. html input 文本框的一些操作(限制输入...)
  8. 中国的脑部研究--脑网络组图谱
  9. javascript轻松解决前端数据排序(互换,置顶,上移,下移),快收藏吧
  10. 大数据 | 从阿里核心场景看实时数仓的发展趋势
  11. 【转】C# SqlServer操作辅助类(SqlServerHelper.cs)
  12. B站 郝斌C语言 课件+笔记 (全)
  13. Android简易本地音乐播放器,Android简易音乐播放器实现代码
  14. 介绍一种养眼的IDEA/Pycharm/Clion配色方案
  15. spyder缩进快捷键
  16. Python | 输出分数形式(Fraction)
  17. 卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。
  18. mysql查询1971年以前_mysql 初篇
  19. STM32 四轴无人机设计——遥控器PPM信号
  20. 【北邮国院大三上】互联网协议_Internet Protocol_PART A

热门文章

  1. webpack 打包并压缩为zip文件
  2. vue 路由嵌套(子路由)注意“/“斜杆问题
  3. k8s部署php镜像
  4. 薄膜?活塞?哪种执行器推力大?
  5. 基于模型的设计---在电力电子中的应用
  6. Google Scholar英文写作工具使用
  7. Joomla安装设置教程(转)
  8. 《图壳》免费超好用的图床,图片最稳定的家
  9. 2014 ACM 上海现场赛B,I,J UVALive7146 7147 7139
  10. 净利大增、营收却连续三年下滑,华阳的智能网联转型“未知数