权限
<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);
}
}
}