Android 监听U盘插入和拔出并获取U盘文件路径

 首先实现一个接收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方法注册广播,但是未能收到广播,不知道是哪个步骤出了问题,有知道的小伙伴可以在评论里说下。

发布了287 篇原创文章 · 获赞 44 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/mqdxiaoxiao/article/details/103697747