要解决Android持久USB权限(始终允许)显示但无法始终允许权限的问题,你可以尝试以下解决方法。
方法1:通过代码请求权限
private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
private void requestPermission() {
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(usbReceiver, filter);
// 获取设备列表
HashMap deviceList = usbManager.getDeviceList();
Iterator deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
usbManager.requestPermission(device, permissionIntent);
}
}
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 {
// 用户未授权设备访问权限
}
}
}
}
};
在 AndroidManifest.xml 文件中添加以下权限:
方法2:检查设备是否支持USB功能 有时,设备可能不支持USB功能,导致无法始终允许权限。你可以通过以下代码检查设备是否支持USB功能:
private boolean isUsbHostSupported() {
PackageManager packageManager = getPackageManager();
return packageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST);
}
确保你的设备支持USB功能后,再尝试请求权限。
使用以上方法之一,你应该能够解决Android持久USB权限(始终允许)显示但无法始终允许权限的问题。