在AndroidManifest文件中添加USB权限
<uses-permission android:name="android.permission.USB_PERMISSION" />
<uses-permission android:name="android.permission.MANAGE_USB"/>
<uses-feature android:name="android.hardware.usb.host" android:required="true"/>
<uses-permission android:name="android.hardware.usb.accessory"/>
然后注册广播
<receiver android:name=".USBReceiver">
<intent-filter android:priority="200">
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
</intent-filter>
<intent-filter android:priority="200">
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<data android:scheme="file"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_EJECT"/>
<data android:scheme="file"/>
</intent-filter>
</receiver>
写一个USB广播类USBReceiver
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import java.io.File;
public class USBReceiver extends BroadcastReceiver {
// private final String USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
private final String USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
private final String ACTION_MEDIA_MOUNTED = Intent.ACTION_MEDIA_MOUNTED;//媒体安装 - 获取USB路径需在媒体安装完成后获取
public static String usbPath="";
@Override
public void onReceive(Context context, Intent intent) {
// L.Companion.d("收到广播:" + intent.getAction());
String action = intent.getAction();
if (ACTION_MEDIA_MOUNTED.equals(action)) {//usb插入
// L.Companion.d("usb已安装");
Log.e("===", "usb插入");
Toast_Util.ToastString(context, "==usb插入=");
if (intent.getData() != null && intent.getData().getPath() != null) {
//usbPath = intent.getDataString()+"/下载字库.png";//(usb在手机上的路径)
usbPath = intent.getData().getPath()+"/下载字库.png";
Log.e("===", "usb插入=usbPath=="+usbPath);
checkUsbFileList(context, intent.getData().getPath());
}
}
if (USB_DEVICE_DETACHED.equals(action)) {//usb拔出
// L.Companion.d("usb拔出");
Log.e("===", "usb拔出");
}
}
private void checkUsbFileList(Context context, String usbPath) {
// L.Companion.d("usb路径:" + usbPath);
String te="";
File file = new File(usbPath);
if (file.exists() && file.isDirectory()) {
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
// L.Companion.d("usb文件:" + files[i]);
Log.e("===","==USB文件="+files[i]);
te+=files[i];
}
}
}
}
usbPath=“/mnt/usb_storage/USB_DISK1/udisk0/下载字库.png” 这个是在U盘下的一张图片。想让这张图片直接显示出来。
Bitmap bitmap=getLoacalBitmap(usbPath);
if(bitmap!=null)
{
image.setImageBitmap(bitmap);
}
/**
* 加载本地图片
* http://bbs.3gstdy.com
* @param url
* @return
*/
private Bitmap getLoacalBitmap(String url) {
try {
FileInputStream fis = new FileInputStream(url);
return BitmapFactory.decodeStream(fis);
} catch (FileNotFoundException e) {
Log.e(TAG, "===========文件错误=="+e.getMessage());
e.printStackTrace();
return null;
}
}
本文介绍了如何在Android应用中获取并使用U盘文件。首先,需要在AndroidManifest.xml中添加USB权限,然后注册USBReceiver广播接收器来监听USB设备的插入和移除。当USB设备插入时,通过ACTION_MEDIA_MOUNTED广播获取U盘路径,并加载U盘中的文件,例如图片。

2128

被折叠的 条评论
为什么被折叠?



