【问题标题】:How to obtain USB storage permissions on Android 6+?如何在 Android 6+ 上获取 USB 存储权限?
【发布时间】:2019-01-18 03:32:23
【问题描述】:

我已经获得了这个权限:

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

将文件保存到本地是可以的。但我无法保存到USB 存储设备。

如何获得另一个写权限?

【问题讨论】:

  • WRITE_EXTERNAL_STORAGE 权限只需授予一次。
  • 是的,被授予了。
  • 那么问题出在哪里?他们使用相同的权限。
  • 相同的代码将文件保存到内部存储是可以的。也许外部存储(SD卡,USB)需要另一个权限来授予。
  • @PrateekBhardwaj 认为这是签名级别的权限(自定义 ROM)。自己看看,它没有列出:developer.android.com/reference/android/Manifest.permission 应用程序必须请求权限,如我的回答中所述。

标签: android android-permissions usb-drive


【解决方案1】:

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 Host 了解如何转移 - 以及如何转移到 releaseInterface()close()

【讨论】:

  • 让我试试看。谢谢。
猜你喜欢
  • 2022-09-23
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
相关资源
最近更新 更多