标签:android
在 Android 系统里,有两种类型的 App 存在,一种是系统级 App ,比如打电话,发短信,拍照等等,这些 App 最明显的特点就是 普通方法不可以卸载。另一种是普通 App ,用户从应用市场上下载主动安装的 App ,这样的 APP 可以卸载。
系统 App 和普通 App 还有很多其他重要的区别,主要体现在一下几个方面
获取 安装位置的方法
/** * *判断当前 App 是否为 系统 APP * */ public static boolean isSystemApp(Context context){ boolean isSystem = false; if(context != null ){ String packageName = context.getPackageName(); try{ PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName,0); if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYST) != 0){ isSystem = false ; }else{ isSystem = true ; } }catch(NameNotFoundException e){ isSystem = false ; } return isSystem; } }
系统 App 制作
上面说了系统 APP 那么多的好处,怎么才能让我们的APP 变成系统 APP 呢?下面介绍两个方法
1.制作 ROM
这个比较麻烦,工作量相对较大,好处是制作完成之后以后都无需在改变。现在给大家介绍个投机取巧的方法,在华为 u8950D 上用官方的 ROM 测试 也是可以的。
a.下载适合手机的 ROM卡刷包
b.用压缩包的形式打开 ROM 文件 ,依次打开/system/app 目录,这时会看到很多系统的 apk 文件。
c.将我们自己的 apk 直接拖进去,这是就可以看到我们自己的 APP 在 system/app 目录下。如果里面有不喜欢的 APP ,可以直接拖出来即可。
这样的方式修改 Rom 压缩文件,ROM 的签名信息 并没有修改,还是可以刷到手机上,正常使用。
对于深度定制修改是手机和系统没有测试,如小米 ,魅族等。在华为 u8950D 测试通过。
2.移动apk 文件位置
默认情况下普通 APP 安装在内存 data/data/app 目录或者 SD卡 下。可以通过第三方软件移动 APk 位置,这样我们的 APP 也具有了系统 APP 的属性和功能。
前提条件
a.安装要移动的 APP
b.手机具有 root 权限
c.安装有第三方文件浏览器,推荐 ES 文件浏览器。
满足这几个条件,具体操作就很简单啦。
使用场景说明:
普通的用户或者一般的 APP ,是没有这样的需求的。什么情况下我们会用到移动我们安装 APP 的 位置呢 ?
需求描述:在第三方刷机渠道,推广自有 App ,要去统计这个渠道有多少推广用户,这些用户累计在手机上停留时间。
需求解析:统计推广的用户数量,需要在用户刷上 ROM 后,第一次开机向服务端发送到达统计数据,标识这个用户已经是一个推广用户。第一次开机时,我们的 APP 并没有启动,如果不是系统 APP ,是收不到系统的各种广播事件。
针对这个需求的测试,如果要是使用第一种方法,工作量和时间都会很长,如果使用第二种方法,会提高效率,同时减轻很多工作量。
关于系统APP和普通APP 的介绍就这些,有什么问题欢迎大家交流
标签:android
原文地址:http://blog.csdn.net/imesong/article/details/39326203