尝试使用AOSP的一些较新的Android API,我发现一些需要android.permission.BLUETOOTH_PRIVILEGED权限.根据
docs,许可“不适用于第三方应用程序”.
我在其他地方读过,您可以通过在/ system / app目录中安装您的应用程序来获取root设备上的系统级权限.我在我的root用户Nexus 5上尝试了这个,但是我的应用程序仍然无法获得所需的权限. (参见下面的代码和LogCat输出.)
An alternative I have heard是构建您自己的自定义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");
}
...
}
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 com.radiusnetworks.testapp for activity com.radiusnetworks.testapp/.MainActivity: pid=3124 uid=10075 gids={50075, 3002, 3001}
D/MainActivity( 3124): This is a system application
D/MainActivity( 3124): I do not have android.permission.BLUETOOTH_PRIVILEGED
表现:
package="com.radiusnetworks.testapp"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="19"
android:targetSdkVersion="19" />
android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.radiusnetworks.testapp.MainActivity"
android:label="@string/app_name" >
作者探索在AOSP中使用新API时遇到BLUETOOTH_PRIVILEGED权限问题,尝试了在根设备/system/app安装、自定义ROM签名等方法。寻求在stock ROM上获取系统权限的途径及错误分析。
2万+

被折叠的 条评论
为什么被折叠?



