1

I have the following permission

<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />

in the android manifest.

Using this script to install the application in /system/priv-app:

How to install an app in system/app while developing from android studio

Now, I get this error:

 Caused by: java.lang.SecurityException: Needs com.google.android.things.permission.MANAGE_BLUETOOTH.: Neither user 10036 nor current process has com.google.android.things.permission.MANAGE_BLUETOOTH.
    at android.os.Parcel.readException(Parcel.java:2013)
    at android.os.Parcel.readException(Parcel.java:1959)

Even though it worked when installed normally.

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Checking the requested versus granted permissions show that only com.google.android.things.permission.MANAGE_BLUETOOTH is missing.

Sergeis-MBP:~ darvin$ adb shell dumpsys package com.darvin.usbmavicblehidandroidthing
Activity Resolver Table:
  Non-Data Actions:
      android.intent.action.MAIN:
        ef16bec com.darvin.usbmavicblehidandroidthing/.MainActivity filter c503d5
          Action: "android.intent.action.MAIN"
          Category: "android.intent.category.LAUNCHER"

Key Set Manager:
  [com.darvin.usbmavicblehidandroidthing]
      Signing KeySets: 12

Packages:
  Package [com.darvin.usbmavicblehidandroidthing] (350bb5):
    userId=10036
    pkg=Package{325524a com.darvin.usbmavicblehidandroidthing}
    codePath=/system/priv-app/USBMavicBLEHIDAndroidThing
    resourcePath=/system/priv-app/USBMavicBLEHIDAndroidThing
    legacyNativeLibraryDir=/system/priv-app/USBMavicBLEHIDAndroidThing/lib
    primaryCpuAbi=null
    secondaryCpuAbi=null
    versionCode=1 minSdk=24 targetSdk=29
    versionName=1.0
    splits=[base]
    apkSigningVersion=2
    applicationInfo=ApplicationInfo{532c5bb com.darvin.usbmavicblehidandroidthing}
    flags=[ SYSTEM DEBUGGABLE HAS_CODE ALLOW_CLEAR_USER_DATA TEST_ONLY ALLOW_BACKUP ]
    privateFlags=[ PRIVILEGED PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ]
    dataDir=/data/user/0/com.darvin.usbmavicblehidandroidthing
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    usesLibraries:
      com.google.android.things
    usesLibraryFiles:
      /system/framework/com.google.android.things.jar
    timeStamp=2019-09-03 23:37:16
    firstInstallTime=2019-09-03 23:33:24
    lastUpdateTime=2019-09-03 23:37:16
    signatures=PackageSignatures{87f5ad8 [81ec50ae]}
    installPermissionsFixed=true installStatus=1
    pkgFlags=[ SYSTEM DEBUGGABLE HAS_CODE ALLOW_CLEAR_USER_DATA TEST_ONLY ALLOW_BACKUP ]
    requested permissions:
      android.permission.BLUETOOTH
      android.permission.BLUETOOTH_ADMIN
      android.permission.BLUETOOTH_PRIVILEGED
      com.google.android.things.permission.MANAGE_BLUETOOTH
    install permissions:
      android.permission.BLUETOOTH: granted=true
      android.permission.BLUETOOTH_ADMIN: granted=true
      android.permission.BLUETOOTH_PRIVILEGED: granted=true
    User 0: ceDataInode=-4294966185 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false
      gids=[3002, 3001]
      runtime permissions:

Package Changes:
  Sequence number=2
  User 0:
    seq=1, package=com.google.android.gms

Dexopt state:
  [com.darvin.usbmavicblehidandroidthing]
    path: /system/priv-app/USBMavicBLEHIDAndroidThing/USBMavicBLEHIDAndroidThing.apk
      arm: /data/dalvik-cache/arm/system@priv-app@USBMavicBLEHIDAndroidThing@USBMavicBLEHIDAndroidThing.apk@classes.dex[
      status=kOatUpToDate, compilation_filter=verify]

Compiler stats:
  [com.darvin.usbmavicblehidandroidthing]
    (No recorded stats)

Added whitelist in /etc/permissions/privapp-permissions-com.darvin.usbmavicblehidandroidthing.xml

Sergeis-MBP:USBMavicBLEHIDAndroidThing darvin$ adb shell cat /etc/permissions/privapp-permissions-com.darvin.usbmavicblehidandroidthing.xml  
<?xml version="1.0" encoding="utf-8"?>
<permissions>
  <privapp-permissions package="com.darvin.usbmavicblehidandroidthing">
    <permission name="android.permission.BLUETOOTH" />
    <permission name="android.permission.BLUETOOTH_ADMIN" />
    <permission name="android.permission.BLUETOOTH_PRIVILEGED" />

    <permission name="com.google.android.things.permission.MANAGE_BLUETOOTH" />

  </privapp-permissions>
</permissions>

Nothing changed

Reaz Murshed
  • 23,691
  • 13
  • 78
  • 98
darvin
  • 529
  • 5
  • 17
  • Android Things requires you to request the MANAGE_BLUETOOTH permission if you are accessing connection related APIs: https://developer.android.com/things/sdk/apis/bluetooth – devunwired Sep 04 '19 at 17:53
  • and I do, ``` ``` - is it not enough? – darvin Sep 04 '19 at 19:57
  • This is most likely because you are trying to install your app into the /system partition directly, which Android Things does not formally support. The logic used to grant Android Things permissions is different than traditional Android permissions and it's not currently being triggered for your APK. – devunwired Sep 06 '19 at 03:52

0 Answers0