Рассмотрите простой инструмент, используя BroadcastReceiver
для достижения простой цели. Потому что это не должно использоваться другими приложениями, он определяет разрешение с ProtectionLevel из signature
или signatureOrSystem
:Разрешение BroadcastReceiver для оболочки adb
<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
и других приложений одновременно.
Я не понимаю этого утверждения: «... не работает ... до тех пор, пока разрешение установлено. Без него все прекрасно работает ...» вы говорите, что это работает ** без ** разрешение, и вы хотите, чтобы он не работал? – muratgu