Как исправить ошибку java.lang.SecurityException: у вызывающей стороны отсутствует необходимое разрешение com.google.android.things.permission.USE_PERIPHERAL_IO ошибка? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь получить проект Android Things для сборки и запуска на Raspberry Pi 3. Файлы найдены здесь .Я подключен к Raspberry Pi 3 через Ethernet.Я подключил кабель Ethernet непосредственно от моего ноутбука к RPI и использовал Internet Sharing.Затем я использовал adb connect для подключения к устройству, и оно успешно подключается.

Я работаю:

Android Studio 3.1.2
Build #AI-173.4720617, built on April 13, 2018
JRE: 1.8.0_152-release-1024-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6

В Android Studio были внесены изменения, поэтому мне пришлось немного изменить код.Я загрузил файлы и обновил PeripheralManagerService до PeripheralManager.

PeripheralManager pioService = PeripheralManager.getInstance();

Когда я нажимаю кнопку «Выполнить», я получаю следующую ошибку (имейте в виду, что я уже добавил следующее разрешение дляФайл манифеста Android над разделом приложения):

<uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO"/>

Пожалуйста, помогите мне разобраться, что мне все еще не хватает.Спасибо!

06-08 01:43:28.746 3598-3598/? I/zygote: Late-enabling -Xcheck:jni 06-08 01:43:28.993 3598-3598/apps.hackstermia.buttonthings I/MainActivity: Starting ButtonActivity
06-08 01:43:29.013 3598-3598/apps.hackstermia.buttonthings I/MainActivity: Configuring GPIO pins
06-08 01:43:29.017 3598-3598/apps.hackstermia.buttonthings D/AndroidRuntime: Shutting down VM
06-08 01:43:29.028 3598-3598/apps.hackstermia.buttonthings E/AndroidRuntime: FATAL EXCEPTION: main
    Process: apps.hackstermia.buttonthings, PID: 3598
    java.lang.RuntimeException: Unable to start activity ComponentInfo{apps.hackstermia.buttonthings/apps.hackstermia.buttonthings.MainActivity}: java.lang.SecurityException: Caller lacks required permission com.google.android.things.permission.USE_PERIPHERAL_IO
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.SecurityException: Caller lacks required permission com.google.android.things.permission.USE_PERIPHERAL_IO
        at android.os.Parcel.readException(Parcel.java:2005)
        at android.os.Parcel.readException(Parcel.java:1951)
        at com.google.android.things.pio.IPeripheralManagerClient$Stub$Proxy.GetGpioClient(IPeripheralManagerClient.java:759)
        at com.google.android.things.pio.GpioImpl.<init>(GpioImpl.java:50)
        at com.google.android.things.pio.PeripheralManager.openGpio(PeripheralManager.java:197)
        at apps.hackstermia.buttonthings.MainActivity.onCreate(MainActivity.java:26)
        at android.app.Activity.performCreate(Activity.java:7010)
        at android.app.Activity.performCreate(Activity.java:7001)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
06-08 01:43:29.047 3598-3598/apps.hackstermia.buttonthings I/Process: Sending signal. PID: 3598 SIG: 9

Ответы [ 5 ]

0 голосов
/ 22 сентября 2018

Сначала AndroidManifest должен включить следующие строки перед application tag

<uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO" />
<uses-permission android:name="com.google.android.things.permission.MANAGE_INPUT_DRIVERS" />

Затем, если вы устанавливаете приложение через adb, вы должны установить <APK> с параметром -g какследуйте рекомендациям @Devunwired здесь

adb install -g <APK>
0 голосов
/ 13 июня 2018

У меня была такая же проблема.Пробовал разные подходы как упомянуто выше.Что действительно работает для меня 1. Обновите свою андроид студию до последней версии.Мой был 3.0.1.После обновления это 3.1.3 2. обновить версию ОС Android для последних вещей.Было 0,6.После обновления это 1.0.1.3. Установите эти разрешения в манифесте Android <uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO"/> <uses-permission android:name="com.google.android.things.permission.MANAGE_INPUT_DRIVERS" />

Надеюсь, что эти шаги заставят ваши вещи работать на Android

0 голосов
/ 13 июня 2018

Спасибо за ваш вклад всем.

Я обнаружил, что разрешение в файле манифеста должно быть прямым потомком или вне приложения

0 голосов
/ 13 июня 2018

друзья ~!

У меня была такая же проблема с моей Android Studio 3.1.3 и RaspberryPi 3 и AndroidThings.Эта платформа убивала мое приложение "blink", потому что у меня не было разрешения "[..] USE_PERIPHERAL_IO".

Для моей проблемы решением было добавление этого предложения:

<uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO"/>
<uses-permission android:name="com.google.android.things.permission.MANAGE_INPUT_DRIVERS" />

к моему файлу манифеста Android.

Спасибо всем за помощь:))

0 голосов
/ 08 июня 2018

В зависимости от версии Android Studio тюрьмы применяются и предоставляются при обновлении и установке или только при установке (в более старых версиях)

Перезагрузка устройства должна исправить это, удаление и повторная установка приложения также должныисправить это.

...