android external如何进行外部存储监控
在Android中,你可以使用Environment.getExternalStorageDirectory()
方法来获取外部存储的根目录。但是,从Android 10(API级别29)开始,访问外部存储的方式发生了变化,引入了分区存储(Scoped Storage)和安全文件(Storage Access Framework)。因此,你需要根据你的应用需求和目标API级别来选择合适的方法来监控外部存储。
- 如果你的应用支持Android 10及更高版本,你可以使用分区存储(Scoped Storage)来访问外部存储。分区存储将用户的私有数据存储在内部存储中,而公共数据可以存储在外部存储中。要监控外部存储的变化,你可以使用
MediaStore
API来监听媒体库中的更改。例如,你可以使用ContentObserver
来监听特定目录的更改:ContentResolver contentResolver = getContentResolver();Uri directoryUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;String selection = "((" + MediaStore.Images.Media.DATA + " LIKE ?)")";String[] selectionArgs = new String[]{"%external_storage_root%/Pictures/%"};contentResolver.registerContentObserver(directoryUri, true, new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);// 在这里处理外部存储的变化}});
- 如果你的应用需要支持Android 9(API级别28)及更低版本,你可以使用
MediaStore
API来访问外部存储。在这种情况下,你可以使用MediaScannerConnection
来扫描特定文件或目录,以便在其他应用中可用。例如,要扫描特定目录中的所有图片,你可以这样做:MediaScannerConnection.scanFile(this, new String[]{externalStorageDirectory + "/Pictures"}, new String[]{"image/jpeg", "image/png"}, null);
请注意,你需要在AndroidManifest.xml
文件中添加READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
权限,并在运行时请求这些权限(针对API级别23及更高版本)。
总之,要监控外部存储的变化,你需要根据你的应用需求和目标API级别选择合适的方法。对于支持分区存储的Android 10及更高版本,可以使用MediaStore
API来监听媒体库中的更改;对于支持分区存储之前的Android版本,可以使用MediaScannerConnection
来扫描特定文件或目录。
上一篇:android external如何设置外部存储权限
android
声卡驱动正常但是没有声音如何办?声卡驱动正常没声音的解决方法
英伟达显卡驱动如何退回到原来版本?英伟达显卡驱动退回到原来版
重装系统,电脑只有一个C盘如何创建分区
Defender提示错误应用程序MsMpEng.exe无法启动
电脑无法启动或仍在加载如何办?电脑无法启动或仍在加载的解决方
打印机驱动如何卸载删除?卸载打印机驱动干净的教程
电脑没网如何安装网卡驱动?教你没网如何安装网卡驱动的方法
系统32位和62位如何选择:详解它们之间的差异
电脑文件删不掉如何办?四种方法解决
任务管理器快捷键有哪些?任务管理器快捷键大全