android 12 framework 发送U 盘插拔的intent
时间: 2023-11-19 08:04:21 浏览: 36
在 Android 12 Framework 中,可以使用 StorageManager 类的 registerListener() 方法来监听 U 盘插拔事件,并发送相应的 Intent。
以下是示例代码:
```java
StorageManager storageManager = getSystemService(StorageManager.class);
StorageEventListener listener = new StorageEventListener() {
@Override
public void onVolumeStateChanged(@NonNull VolumeInfo vol, int oldState, int newState) {
if (vol.getType() == VolumeInfo.TYPE_PUBLIC && vol.getState() == VolumeInfo.STATE_MOUNTED) {
// U 盘已插入
Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + vol.getPath()));
sendBroadcast(intent);
} else if (vol.getType() == VolumeInfo.TYPE_PUBLIC && vol.getState() == VolumeInfo.STATE_UNMOUNTED) {
// U 盘已拔出
Intent intent = new Intent(Intent.ACTION_MEDIA_EJECT, Uri.parse("file://" + vol.getPath()));
sendBroadcast(intent);
}
}
};
storageManager.registerListener(listener);
```
在代码中,首先通过 getSystemService() 方法获取 StorageManager 实例,然后通过 registerListener() 方法来注册 StorageEventListener 监听器。当 U 盘插拔事件发生时,会触发 onVolumeStateChanged() 方法,该方法中可以通过 VolumeInfo 对象获取 U 盘的状态信息,进而发送相应的 Intent。注意,需要在 AndroidManifest.xml 中声明 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。