在我的应用中,我需要在USB笔式驱动器上写文件。在三星标签4上,我在阅读和写作方面都没有任何问题。我的应用很棒。 在asus zenpad 10上,有些不同...... 从usb笔式驱动器读取时我没有问题 相反,我在写作时拒绝访问,即在代码中获得异常:
try {
fOut = new FileOutputStream("/storage/USBdisk/prova.bin");
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
在我的androidManifest中,当然,它的定义是:
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
我需要做什么?
答案 0 :(得分:0)
通常 USB pendrive将被称为SD卡, 但Androidmanifest.xml中的权限需要声明不同的权限, USB外部存储需要媒体启用权限,如下所示
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
EX:
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);
}
}
}
}
};
答案 1 :(得分:0)
经过其他来源的研究后,我发现了这一点......它可能对你有帮助!
由于串口转换器是USB设备,Android平板电脑必须充当USB主机。此功能自Android 3.1起可用。 API开发人员页面上提供了API文档,其中包含代码示例。
要与转换器进行实际通信,您必须了解更多关于它的内部结构:市场上有许多不同的设备,一些使用USB HID,另一些使用USB CDC设备类或甚至不遵守任何设备类。 linux lsusb命令可能有助于获取设备/接口描述符。
在典型的CDC设备上,您必须与两个批量端点进行交互,并可能使用一些与接口相关的请求来设置波特率等。请参阅USB实施者论坛上的通信设备类规范。
如果您的设备只有一个IN和一个OUT批量端点(在控制端点旁边),您可能会尝试使用OUT端点上的UsbDeviceConnection.bulkTransfer()方法将一些字节写入串行线路。这很有可能只是工作,但是对于干净的实现,你应该坚持类规范。