Получите права доступа к системе Android, разместив приложение в / system / app?

Экспериментируя с некоторыми новыми API-интерфейсами Android от AOSP, я нашел некоторые, которые требуют разрешения android.permission.BLUETOOTH_PRIVILEGED. Согласно документам , разрешение «недоступно сторонним приложениям».

Я читал в другом месте, что вы можете получить права системного уровня на корневом устройстве, установив приложение в каталог / system / app. Я пробовал это на моем укоренившемся Nexus 5, но мое приложение по-прежнему не получает желаемых привилегий. (См. Вывод кода и LogCat ниже.)

Альтернатива, которую я слышал, – это создать собственный пользовательский Android-ROM, а затем подписать приложение с тем же ключом. Я мог бы это сделать, но предпочел бы иметь возможность использовать изображение запаса, если это возможно.

Итак, что это? Возможно ли получить права доступа к системному уровню на корневом телефоне с изображением на складе? Если так, я делаю что-то неправильно?

Мероприятия:

@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 

Manifest:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.radiusnetworks.testapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.radiusnetworks.testapp.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Начиная с Android 4.4, Привилегированные приложения должны быть помещены в / system / priv-app вместо / system / app. Как только я переместил приложение, он получил привилегию, как ожидалось.

См. Здесь: Приложение AOSP Privileged vs System