首先实现一个接收U盘挂载和异常广播的BroadcastReceiver
public class USBReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
StorageManager mStorageManager = (StorageManager) context.getSystemService(Activity.STORAGE_SERVICE);
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
// U盘根目录
String mountPath = intent.getData().getPath();
if (!TextUtils.isEmpty(mountPath)) {
Log.d("TAG", "U盘挂载:" + mountPath);
}
} else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED) || action.equals(Intent.ACTION_MEDIA_EJECT)) {
Log.d("TAG", "U盘移除");
} else if (action.equals("android.intent.action.BOOT_COMPLETED")) {
}
}
}
然后在Manifest文件中声明该BroadcastReceiver及监听的广播
<receiver android:name=".receiver.USBReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<action android:name="android.intent.action.MEDIA_REMOVED"/>
<data android:scheme="file"></data>
</intent-filter>
</receiver>
只需以上两步就完成了U盘挂载或者移除的广播监听,我们可以在监听里做一些具体的操作,比如U盘挂载后根据U盘路径获取里面的文件内容等。
以上广播的注册采用的是在Manifest中注册,我试过通过代码的registerReceiver方法注册广播,但是未能收到广播,不知道是哪个步骤出了问题,有知道的小伙伴可以在评论里说下。
来源:CSDN
作者:野猿新一
链接:https://blog.csdn.net/mqdxiaoxiao/article/details/103697747