Разрешение BroadcastReceiver для оболочки adb

Рассмотрим простой инструмент, использующий BroadcastReceiver для достижения простой цели. Поскольку это не должно использоваться другими приложениями, оно определяет разрешение с защитойLevel signature или signatureOrSystem :

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="any.test"> <permission android:name="any.test.PERMISSION" android:protectionLevel="signatureOrSystem" /> <application android:label="AnyTest"> <receiver android:name=".Receiver" android:exported="true" android:permission="any.test.PERMISSION" /> </application> </manifest> 

Теперь я хочу проверить это, отправив трансляции через

 adb shell am broadcast -n any.test/.Receiver 

С моего компьютера. Хотя это отлично работает на эмуляторе, оно не работает вообще на реальном устройстве, когда это разрешение установлено. Если разрешение не установлено, все работает по назначению.

Итак, как я могу определить или предоставить разрешение, чтобы я мог протестировать все это на реальном устройстве с помощью ADB ?

Я хочу, чтобы этот экспортированный получатель был немного более безопасным в режиме отладки, поэтому, если есть специальное разрешение на использование ADB или тест времени выполнения, чтобы разрешать вызовы из ADB я могу реализовать в Receiver.onReceive(Context, Intent) , это Тоже поможет. Получателю не нужно работать в ADB и других приложениях одновременно.

Solutions Collecting From Web of "Разрешение BroadcastReceiver для оболочки adb"

Корневая оболочка может отправлять любую широковещательную передачу, защищенную любыми разрешениями.
Нормальная оболочка также получила множество разрешений, проверьте этот файл в коде доступа AOSP: frameworks \ base \ packages \ Shell \ AndroidManifest.xml .

Замените your any.test.PERMISSION с одним разрешением в этом файле, что any.test.PERMISSION является signatureOrSystem , например android.permission.REAL_GET_TASKS . После этого вы можете отправлять трансляцию этому приемнику в оболочку, но другое третье приложение не может.