android u盘广播路径,android6.0 外部存储设备插拔广播以及获取路径(U盘)
时间: 2023-08-16 22:09:03 浏览: 135
android U盘识别
在 Android 中,U 盘插拔会触发 ACTION_MEDIA_MOUNTED 和 ACTION_MEDIA_UNMOUNTED 广播。可以在代码中注册这两个广播来监听 U 盘的插拔情况,并获取 U 盘的路径。
以下是获取 U 盘路径的示例代码:
```java
// 注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter.addDataScheme("file");
registerReceiver(mUsbReceiver, filter);
// 广播接收器
private BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
// U 盘插入
Uri uri = intent.getData();
String path = uri.getPath();
Log.d(TAG, "U盘插入: " + path);
} else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED)) {
// U 盘拔出
Uri uri = intent.getData();
String path = uri.getPath();
Log.d(TAG, "U盘拔出: " + path);
}
}
};
```
需要注意的是,从 Android 6.0 开始,需要动态申请 READ_EXTERNAL_STORAGE 权限才能获取外部存储设备的路径。可以使用以下代码来请求权限:
```java
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE);
}
```
在 onRequestPermissionsResult 回调中处理权限申请结果:
```java
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已被授予
} else {
// 权限被拒绝
}
return;
}
}
```
希望能帮助到你!
阅读全文