U盘插拔广播

780 阅读1分钟

权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

注册广播 - 动态

IntentFilter iFilter = new IntentFilter();  
iFilter.addAction(Intent.ACTION_MEDIA_EJECT);  //u盘拔出广播
iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);  //u盘插入广播
iFilter.addDataScheme("file");  
registerReceiver(mBroadcastReceiver , iFilter);

注册广播 - 静态

AndroidManifest.xml
<receiver android:name=".activities.widget.UsbBroadCastReceiver">  
    <intent-filter android:priority="1000">  <!-- 设置优先级以防被别的程序截取  -->
        <action android:name="android.intent.action.MEDIA_MOUNTED"/>  <!--SD卡插入  -->
        <action android:name="android.intent.action.MEDIA_EJECT" />  <!-- SD卡拔出 -->
        <data android:scheme="file"/>  <!-- 必写选项,否则无法监听到SD卡插拔广播 -->
    </intent-filter>  
</receiver>  

接收广播

public class UsbBroadCastReceiver extends BroadcastReceiver {  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        String action = intent.getAction();  
          
        if(action.equals(Intent.ACTION_MEDIA_EJECT)){  
            ToastUtil.ToastShort(context, R.string.usb_sdeject);  
        }else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){  
            ToastUtil.ToastShort(context, R.string.usb_sdconnect);  
        }  
    }  
}