我正在ApplicationInfo使用packageManager.getInstalledApplications(0)获取对象列表,并尝试根据它们是否是系统应用程序对它们进行分类.
有一段时间我一直在使用这里描述的技术,但是在我的应用程序中看到之后,一些应用程序不在非系统应用程序列表中(例如Facebook,当可用时要求系统在SD上安装自己)卡).在下次阅读ApplicationInfo.FLAG_SYSTEM的实际文档并了解它实际上没有过滤系统应用程序之后,我现在正在寻找一种新方法.
我的猜测是,系统和非系统应用程序的UID之间存在很大差距,我可以收集这些差异来进行区分,但到目前为止我还没有找到答案.我也查看了其他标志,例如ApplicationInfo.FLAG_EXTERNAL_STORAGE,我支持API 1.5.
有没有人有这个真正的解决方案(不涉及FLAG_SYSTEM)?
我试图更好地理解这些差异,以便我可以评估是否应该实现系统服务或服务。我从文档中发现的差异如下:
系统服务
服务
两者之间还有什么不同吗?我正在修改 AOSP 以包含我自己的服务,提供的任何其他信息将有助于帮助我做出决定。
尝试使用AOSP的一些较新的Android API,我发现一些需要android.permission.BLUETOOTH_PRIVILEGED权限.根据文档,许可"不适用于第三方应用程序".
我在别处读过,你可以通过在/ system/app目录中安装你的应用程序来获得root设备的系统级权限.我在我的root用户Nexus 5上尝试了这个,但是我的应用程序仍然无法获得所需的权限.(参见下面的代码和LogCat输出.)
我听说过的另一种方法是构建自己的自定义Android ROM,然后使用相同的密钥对应用程序进行签名.我可以做到这一点,但如果可能的话,我强烈希望能够使用股票图像.
那是哪个呢?是否可以在带有库存图像的root电话上获得系统级权限?如果是这样,我做错了什么?
活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((this.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
Log.d(TAG, "This is a system application");
}
else {
Log.d(TAG, "This is not a system application");
}
if (getApplicationContext().checkCallingOrSelfPermission("android.permission.BLUETOOTH_PRIVILEGED") == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "I have android.permission.BLUETOOTH_PRIVILEGED");
}
else {
Log.d(TAG, "I do not have android.permission.BLUETOOTH_PRIVILEGED");
}
...
}
Run Code Online (Sandbox Code Playgroud)
LogCat输出:
W/PackageManager( 788): Not granting permission android.permission.BLUETOOTH_PRIVILEGED to package com.radiusnetworks.testapp (protectionLevel=18 flags=0x8be47)
I/ActivityManager( 788): Start proc …Run Code Online (Sandbox Code Playgroud) 我是Jaemoon.
我的系统应用程序位于/ system/app中运行良好,直到Android 4.3 Jelly Bean,但它开始出现一些问题,这是Android 4.4 KitKat中的安全问题.
换句话说,我的系统应用程序需要权限,如android.permission.WRITE_APN_SETTINGS和android.permission.CONNECTIVITY_INTERNAL,并且直到Jelly Bean,但是从KitKat,安全问题如下.我不明白为什么我的系统应用程序在Jelly Bean中运行良好的原因导致KitKat出现安全问题.
我怀疑KitKat是否需要在某些脚本文件中进行新设置以获得系统权限.任何人都可以帮助我或指导我吗?
---------------------------------------------------------------------
java.lang.SecurityException: No permission to write APN settings: Neither user 10146 nor current process has android.permission.WRITE_APN_SETTINGS.
...
---------------------------------------------------------------------
java.lang.SecurityException: ConnectivityService: Neither user 10097 nor current process has android.permission.CONNECTIVITY_INTERNAL.
---------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
提前致谢..