android 广播法获取U盘路径代码实现
时间: 2023-10-18 15:53:27 浏览: 67
你可以使用广播接收器来监听U盘插拔事件,并获取U盘的路径。下面是一个简单的代码示例:
首先,在AndroidManifest.xml文件中添加以下权限和广播接收器声明:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application>
...
<receiver android:name=".UsbReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<action android:name="android.intent.action.MEDIA_REMOVED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
...
</application>
```
然后,在你的项目中创建一个名为UsbReceiver的广播接收器类,实现对U盘插拔事件的监听和处理:
```java
public class UsbReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Uri uri = intent.getData();
if (action != null && uri != null) {
if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
// U盘插入
String path = uri.getPath();
// 处理U盘路径
Log.d("UsbReceiver", "U盘插入:" + path);
} else if (action.equals(Intent.ACTION_MEDIA_REMOVED)) {
// U盘拔出
String path = uri.getPath();
// 处理U盘路径
Log.d("UsbReceiver", "U盘拔出:" + path);
}
}
}
}
```
当U盘插入或拔出时,UsbReceiver的onReceive方法将会被调用,并根据Intent的action来判断是插入还是拔出事件。通过uri.getPath()方法可以获取到U盘的路径。
记得在你的Activity中注册和取消注册广播接收器,在onResume和onPause方法中分别调用registerReceiver和unregisterReceiver方法:
```java
public class MainActivity extends AppCompatActivity {
private UsbReceiver usbReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usbReceiver = new UsbReceiver();
}
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addDataScheme("file");
registerReceiver(usbReceiver, filter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(usbReceiver);
}
}
```
这样,你就可以在UsbReceiver的onReceive方法中获取到U盘的路径,并进行相应的处理了。