Intereting Posts
Android Market несколько APK … Как насчет разных архитектур процессора? Получите медиаплеер видеовидео на Android Неустранимая ошибка: неверный макет java.lang.String по значению После обновления службы Google Play до версии 13 я получил сообщение об ошибке Андроид задает собственный шрифт для рисования Как создать пользовательскую строку состояния в android JellyBean 4.2.2 «Сфотографировать и представить его» в портретном режиме на Samsung Galaxy S Почему onKey () вызывается дважды? Как использовать один источник библиотеки для нескольких проектов Виртуальное устройство GenyMotion открывается и сразу исчезает Как перенести данные из одного фрагмента в другой фрагмент андроида PlacePicker не поднимает материальную тему Сохранять состояние пользователя на Android Android Не удалось найти ошибку android-support-v7-appcompat.apk Добавить локальный javadoc для локального аара в Android-Studio

Разрешение 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 . После этого вы можете отправлять трансляцию этому приемнику в оболочку, но другое третье приложение не может.