admin管理员组文章数量:1567274
静态注册
新建UsbBroadcast继承BroadcastReceiver,然后重新onReceive方法
public class UsbBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case Intent.ACTION_MEDIA_MOUNTED: { break; } case Intent.ACTION_MEDIA_UNMOUNTED: { break; } default: break; } } }
在AndroidManifest.xml中注册我们定义的广播接收器
U盘插入和拔出广播为:
android.intent.action.MEDIA_MOUNTED
android.intent.action.MEDIA_UNMOUNTED
<receiver android:name=".broadcast.UsbBroadcast"> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <data android:scheme="file"/> </intent-filter> </receiver>
在上面的xml中,注意添加
<data android:scheme="file"/>
- 这时候插拔U盘我们的广播接收器就能够收到消息了
动态注册
- 跟静态注册的第一步相同,新建我们的广播接收器
在activity启动时进行动态注册广播
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UsbBroadcast usbBroadcast = new UsbBroadcast(); IntentFilter usbFilter= new IntentFilter(); usbFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); usbFilter.addAction(Intent.ACTION_MEDIA_REMOVED); usbFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); usbFilter.addDataScheme("file"); registerReceiver(usbBroadcast,usbFilter); } }
接收广播
无法接收到广播的可能性
- 取消静态注册广播,改为使用动态注册广播
- 静态注册中,记得添加
<data android:scheme="file"/>
- 动态注册广播时,添加
usbFilter.addDataScheme("file");
获取U盘的各种信息
下一篇blog将描述如何获取U盘的各种信息,包括U盘名称、格式、剩余空间、挂载路径等
本文标签: 事件
版权声明:本文标题:Android8.0监听U盘插入拔出事件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727575340a1121577.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论