在Android 6及以上版本中,获取USB存储权限的步骤如下:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这两个权限分别用于读取和写入外部存储器的内容。
private static final int REQUEST_USB_PERMISSION = 1;
private void requestUsbPermission() {
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
usbManager.requestPermission(device, permissionIntent);
}
@Override
public void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(usbReceiver, filter);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(usbReceiver);
}
private final BroadcastReceiver usbReceiver = 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) {
// 已获取USB存储权限,可以进行相关操作
}
} else {
// 未获取USB存储权限
}
}
}
}
};
以上代码中,requestUsbPermission()
方法用于请求USB存储权限,onResume()
和onPause()
方法用于注册和注销广播接收器,usbReceiver
广播接收器用于接收USB存储权限的授权结果。
AndroidManifest.xml
文件中注册广播接收器:<receiver android:name=".UsbReceiver">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_PERMISSION" />
</intent-filter>
</receiver>
这样,当用户插入USB设备时,系统会弹出一个对话框询问是否授权应用程序访问USB设备的存储权限。用户授权后,应用程序即可访问USB存储。
需要注意的是,USB存储权限只适用于外部存储器,不包括内部存储器。
领取专属 10元无门槛券
手把手带您无忧上云