Как получить разрешения USB-накопителя на Android 6+? - PullRequest
0 голосов
/ 18 января 2019

Я уже получил это разрешение:

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"

Сохранить файл в локальном порядке. Но я не могу сохранить на устройство хранения USB.

Как получить другое разрешение на запись?

1 Ответ

0 голосов
/ 18 января 2019

UsbManager.requestPermission() можно использовать с BroadcastReceiver:

private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";

private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (ACTION_USB_PERMISSION.equals(action)) {
            synchronized (this) {
                UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                    if(device != null) {
                      //call method to set up device communication
                    }
                } else {
                    Log.d(TAG, "permission denied for device " + device);
                }
            }
        }
    }

};

который должен быть зарегистрирован:

private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";

UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);   
mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);

и тогда можно запросить разрешение:

UsbDevice device;
mUsbManager.requestPermission(device, mPermissionIntent);

см. USB-хост для получения информации о способах передачи и releaseInterface() и close().

...