Как получить разрешение BLUETOOTH_PRIVILEGED на автоматическое сопряжение устройства на маршрутизируемом устройстве, не помещая его в системное приложение?

#android #bluetooth #permissions #android-permissions

#Android #bluetooth #разрешения #android-разрешения

Вопрос:

Мне нужно ПРИВИЛЕГИРОВАННОЕ разрешение BLUETOOTH на устройство автоматической сопряжения

Как получить BLUETOOTH_PRIVILEGED разрешение на автоматическое сопряжение устройства на поврежденном устройстве, не помещая его в системное приложение?

Я пытаюсь выполнить программный автоматический ремонт с помощью одного устройства, которое я уже отобразил в ListView, не показывая «Диалог сопряжения»

 IntentFilter filter = new IntentFilter("android.bluetooth.device.action.PAIRING_REQUEST");
        registerReceiver(new PairingRequest(), filter);
  

// приемник

 public static class PairingRequest extends BroadcastReceiver {
    public PairingRequest() {
        super();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.bluetooth.device.action.PAIRING_REQUEST")) {
            try {
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                int pin = intent.getIntExtra("android.bluetooth.device.extra.PAIRING_KEY", 0);
                //the pin in case you need to accept for an specific pin
                Log.d("PIN", " "   intent.getIntExtra("android.bluetooth.device.extra.PAIRING_KEY",0));
                //maybe you look for a name or address
                Log.d("Bonded", device.getName());
                byte[] pinBytes;
                pinBytes = ("" pin).getBytes("UTF-8");
                device.setPin(pinBytes);
                device.setPairingConfirmation(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
  

но после вызова device.setPairingConfirmation(true); is он переходит в исключение с этой ошибкой java.lang.SecurityException: Need BLUETOOTH PRIVILEGED permission: Neither user 10069 nor current process has android.permission.BLUETOOTH_PRIVILEGED.

Я выполнил поиск, и все предложения заключались в том, чтобы поместить приложение в system / app, но я не могу поместить туда, потому что мне нужно будет вносить обновления в будущем.

Мое устройство, которое я использую, внедрено, а приложение находится в пути «данные / приложение»

Любое предложение будет полезным. Большое спасибо!

Комментарии:

1. в документах указано: «Это недоступно для сторонних приложений». Я предполагаю, что вам нужно, чтобы ваше приложение было подписано тем же ключом, что и платформа устройства, и добавлено в белый список привилегированных разрешений — source.android.com/devices/tech/config/perms-whitelist

2. @MarkKeen спасибо, я посмотрю на белый список привилегированных разрешений

3. Я не думаю, что вы обойдетесь без того, чтобы оно находилось в папке priv-app, независимо от того, является ли оно корневым..