Android 防止PC端第三方流氓软件强制安装apk至android设备
来源:互联网 发布:大学生抑郁症数据 编辑:程序博客网 时间:2024/06/08 14:21
今天,研究了一下PC端软件连接设备(android)后,强制安装应用程序到设备端,比如某60,某讯等,最后被我活生生禁掉了,折服于我的PMS之下,欲知如何禁之,且听下文分解:
软件平台:Android 4.4.3
硬件平台:Mavell
android系统安装app有诸多方式,
其一,将app放置目标平台/system/app和/data/app目录,PMS(PackageManagerService)会定时扫描该目录,从而安装app;
其二,从网络下载应用程序,然后实现安装;
其三,adb命令安装;
其四,通过SD卡安装,点击安装。
经过我的分析,判断第三方PC端软件使用的是第一种方式,将app放至/data/app目录,PMS在扫描该目录之后,新的包名app会开始安装。
现将修改的方式发布如下:
首先,在PackageManager.java添加权限限制的应用数组。
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1338,6 +1338,18 @@ public abstract class PackageManager {
= "android.content.pm.extra.PERMISSION_LIST";
/**
+ * The app list who have no permission to install.
+ *
+ * @hide
+ */
+ public static final String[] NO_PERMISSION_PACKAGE_LIST
+ = { "com.nd.assistance",
+ "com.qihoo",
+ "com.tencent",
+ "com.shuame",
+ };
+
+ /**
该字符串数组的内容,为欲禁用的第三方的包名。
其次,修改PackageManagerService.java
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -4017,7 +4018,16 @@ public class PackageManagerService extends IPackageManager.Stub {
private int createDataDirsLI(String packageName, int uid, String seinfo) {
int[] users = sUserManager.getUserIds();
- int res = mInstaller.install(packageName, uid, uid, seinfo);
+ int res;
+ for (int index = 0; index < PackageManager.NO_PERMISSION_PACKAGE_LIST.length; index ++) {
+ if (packageName.indexOf(PackageManager.NO_PERMISSION_PACKAGE_LIST[index]) != -1) {
+ return PackageManager.INSTALL_FAILED_INVALID_APK;
+ }
+ }
+ res = mInstaller.install(packageName, uid, uid, seinfo);
if (res < 0) {
return res;
}
扫描到相应的包名后,会通过For循环和禁用的第三方包名对比,如果其包含在第三方禁用的数组列表,则跳过安装,返回INSTALL_FAILED_INVALID_APK。
禁用流氓软件霸王硬上弓功能实现完毕。O(∩_∩)O哈哈哈~
- Android 防止PC端第三方流氓软件强制安装apk至android设备
- Android 增加第三方APK
- android添加第三方apk
- android APK 启动第三方APK
- android第三方应用apk安装和运行控制解决方案
- android第三方应用apk安装和运行控制解决方案
- android第三方应用apk安装和运行控制解决方案
- android源码中预安装第三方的apk软件
- 查看当前android设备已安装的第三方包
- android 预装第三方apk的方法
- Android: 第三方jar打包进APK
- android 预装第三方apk的方法
- Android 5.0 内置第三方apk
- android接入第三方apk的解决方法
- android中启动第三方apk
- Android 5.0 内置第三方apk
- Android系统预装第三方apk
- Android系统预装第三方apk
- 研发管理01:项目管理(PM) 与 Scrum Master (SM)
- 我的2012-分享我的四个项目经验
- open和fopen的区别(unix/linux编程实现2.3)
- 在Android上实现模糊视图
- hdu4819Mosaic
- Android 防止PC端第三方流氓软件强制安装apk至android设备
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- OC 源生获取当前位置经纬度
- 枚举类
- svn 配置
- java浮点类型float精度与Double精度范围实例使用说明
- C++实现线程池
- SGU 109 Magic of David Copperfield II(构造)
- C语言FILE结构体以及缓冲区深入探讨(unix/linux编程实现2.4)