Rozważ proste narzędzie, używając BroadcastReceiver
, aby osiągnąć prosty cel. Ponieważ ten nie powinien być używany przez inne aplikacje, definiuje się jako gość z ProtectionLevel z signature
lub signatureOrSystem
:BroadcastOdpowiedźReceiver dla powłoki 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>
teraz chciałbym to sprawdzić wysyłając transmisje poprzez
adb shell am broadcast -n any.test/.Receiver
z moim komputer. Chociaż działa to doskonale na emulatorze, nie działa on w ogóle na prawdziwym urządzeniu, gdy ustawiono to uprawnienie. Jeśli uprawnienia nie są ustawione, wszystko działa zgodnie z przeznaczeniem.
Jak mogę zdefiniować lub udzielić pozwolenia, aby przetestować to wszystko na prawdziwym urządzeniu z ADB
?
Chcę, aby ten eksportowany odbiornik trochę bardziej bezpieczny w trybie debugowania, więc jeśli tam jest specjalne pozwolenie na ADB
użytkowania lub test run-time do tylko pozwalają na połączenia z ADB
mogę wdrożyć w Receiver.onReceive(Context, Intent)
, to pomogłoby zbyt . Odbiornik nie musi pracować dla ADB
i innych aplikacji w tym samym czasie.
Nie rozumiem tego stwierdzenia: "... nie działa ... tak długo jak pozwolenie jest ustawione Bez tego wszystko działa dobrze ..." czy mówisz, że to działa ** bez ** pozwolenie i chcesz, żeby nie działało? – muratgu