我正在构建一个android应用程序,并将它作为系统应用程序放置在/ system /priv-app (构建AOSP) Android操作系统版本: 6.0.1 (api 23)下。
ApplicationInfo ai = packageManager.getApplicationInfo(
packageName, 0);
// Check if FLAG_SYSTEM or FLAG_UPDATED_SYSTEM_APP are set.
if (ai != null
&& (ai.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0) {
return true;
}此代码保留true (用于系统应用程序)
我已经读过,系统应用程序将拥有所有的运行时权限,如位置、存储等。
但是它仍然要求位置和存储的权限(系统对话框)。
我试过什么?
1)在清单"android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS"中使用此权限
2)在框架中增加了几行代码
services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java如前所述,这里
不过,应用程序仍在请求许可。
注*:我还希望获得android.permission.WRITE_SETTINGS、WRITE_SECURE_SETTINGS和Draw over other apps的权限,而无需询问/提示用户
再注一 *
这个应用程序是用于定制操作系统的硬件的,我可以访问所有的框架代码
发布于 2018-09-04 09:58:29
首先,转储包服务并检查包是否有正确的标志和权限。如果您的应用程序是特权的,privateFlags必须有特权。如果应用程序具有特权,则在清单中请求所有运行时权限。然而,在Android6.0上,我不确定这是真的。
adb shell dumpsys package
Packages:
Package [com.android.systemui] (4dfb5a):
....
flags=[ SYSTEM HAS_CODE PERSISTENT ]
privateFlags=[ PRIVILEGED DEFAULT_TO_DEVICE_PROTECTED_STORAGE DIRECT_BOOT_AWARE RESIZEABLE_ACTIVITIES ]
dataDir=/data/user_de/0/com.android.systemui
....
pkgFlags=[ SYSTEM HAS_CODE PERSISTENT ]
declared permissions:
com.android.systemui.permission.SELF: prot=signature, INSTALLED
requested permissions:
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.READ_EXTERNAL_STORAGE
....
install permissions:
android.permission.REAL_GET_TASKS: granted=true
android.permission.REMOTE_AUDIO_PLAYBACK: granted=true请看一下这个回答
https://stackoverflow.com/questions/52097283
复制相似问题