最近在Q上又发现一个问题,在文件传输模式下对SD卡中的视音频文件及照片文件进行新增/删除,图库和音乐播放器列表未及时更新,先开始以为是没有接收广播,后面把文件直接丢进机身后,图库和音乐播放器就更新了,研究了下发现和之前写的相机权限有关,这次就写完整一点,以及在sd卡加文件后顺便更新媒体库。
具体代码如下:
首先一、导包:

import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import java.util.ArrayList;
import android.os.Environment;
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.os.storage.VolumeInfo;
import java.io.File;
import java.util.List;
import android.media.MediaScannerConnection;

二、判断权限问题:

private StorageManager mStorageManager;在oncreate中添加判断,mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);if (ContextCompat.checkSelfPermission(MusicBrowserActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){//没有权限则申请权限Sdcard();}else { //有权限直接执行scanFile(getAvailableExternalVolume().path);}
编写申请权限代码,public void Sdcard() {VolumeInfo externalVolume = getAvailableExternalVolume();if (externalVolume != null) {createAccessPermission(externalVolume.path);}}private void createAccessPermission(String path) {StorageVolume storageVolume = mStorageManager.getStorageVolume(new File(path));Intent intent = storageVolume.createOpenDocumentTreeIntent();intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);startActivityForResult(intent, 1);}private VolumeInfo getAvailableExternalVolume() {List<VolumeInfo> volumes = mStorageManager.getVolumes();for (VolumeInfo volume : volumes) {DiskInfo diskInfo = volume.getDisk();if (diskInfo != null&& diskInfo.isAdoptable()&& volume.isMountedWritable()) {return volume;}}return null;}

三、获取权限后,实现媒体库更新:

public void scanFile(String filePath) {try {MediaScannerConnection.scanFile(this, new String[]{filePath}, null,new MediaScannerConnection.OnScanCompletedListener() {public void onScanCompleted(String path, Uri uri) {android.util.Log.d("--", "Scanned " + path + ":");android.util.Log.d("--", "-> uri=" + uri);}});} catch (Exception e) {e.printStackTrace();}}

完成以上,即可在启动时自动更新媒体库。

05- AndroidQ(10.0) sd卡权限问题 媒体库更新相关推荐

  1. android 请求sd卡权限,androidQ sd卡权限使用详解

    默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图.应用可以使用 Context.getExternalFilesDir() 将专用于自己的文件存储在 ...

  2. android sdcardfs 权限,androidQ sd卡权限使用详解

    默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图.应用可以使用 Context.getExternalFilesDir() 将专用于自己的文件存储在 ...

  3. android sd 挂载流程_Android7.0 SD卡挂载流程

    Android7.0 SD卡挂载流程 序言:这是7.0时候的总结,8.0MountService改名成了StorageManageService,懒得再重新总结,直接把7.0的总结贴上 这篇文章是对上 ...

  4. 如何优雅的申请sd卡权限

    在上一篇文章安卓如何申请sd卡权限并写入文件已经解决了向sd卡里面写入文件的问题了,解决办法需要startActivity,然后在onActivityResult方法里面去监听是否授权成功,这种方法对 ...

  5. Android添加sd卡权限

    Android添加sd卡权限 1.在AndroidManifest.xml中添加 <uses-permission android:name="android.permission.R ...

  6. Android7.0 SD卡挂载流程

    Android7.0 SD卡挂载流程 序言:这是7.0时候的总结,8.0MountService改名成了StorageManageService,懒得再重新总结,直接把7.0的总结贴上 这篇文章是对上 ...

  7. 加载SD卡中的SO库

    基本信息 作者:kaedea 项目:android-dynamical-loading JNI与NDK Android中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其 ...

  8. android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题

    一.问题描述## Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中 [预置条件]插入T卡[操作步骤]设置>存储设备和USB>选择SD卡为默认存储& ...

  9. android6.0 sd卡卸载api,android6.0 用户关掉sd卡读取权限的情况下, 还能做到手机缓存么?...

    兄弟,你理解错了. 可以看看官方文档. Android的储存空间分两块:Internal storage和External storage Internal storage 总是可用的,不需要额外权限 ...

最新文章

  1. C#实现一个用于开机启动其他程序的Windows服务
  2. python 中使用 global 引发了莫名其妙的问题
  3. c语言随机迷宫生成方法,[原创]递归随机迷宫生成算法详解
  4. 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
  5. CodeForces - 916D Jamie and To-do List(主席树+模拟)
  6. 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。
  7. 【pyqt5学习】——items view相关控件(list view、table view)
  8. mysql适合什么阵列_如何选择最合适的RAID级别
  9. Java –什么是瞬态字段?
  10. docker rabbitmq_Docker部署RabbitMQ集群
  11. 利用for循环打印出不同的三角形
  12. c how to program; 习题:3.25 编写一个利用循环打印表格数据的程序.
  13. 2017CV技术报告:从3D物体重建到人体姿态估计
  14. 【有利可图网】PS实战教程55:打破次元壁,将照片从三次元跨越到二次元
  15. ACL流量控制工具-- 王贝的学习笔记
  16. Linux Centos 7 实现java控制打印机打印文件**
  17. python数据常用命令_python写的系统常用命令(一)
  18. 可以让男人看一遍哭一遍的文章(转贴)
  19. 计算机机房坏境设施演练,计算机机房环境设施应急演练方案.doc
  20. 实例:【基于逻辑回归的鸢尾花二分类和三分类问题】

热门文章

  1. 教师培训教育述职PPT模板
  2. 基于DLP4500的结构光单目相机3D扫描SDK介绍(附源码)(1)
  3. 车险赔付率分析报告_对车险赔付率高的原因分析
  4. MIO神达A700/A701ROM刷机教程
  5. 诸多源码,正是我想要的
  6. Untiy3D笔记之番外篇——c# 生成真正随机数
  7. C语言实现数据保护算法(2)——AES加解密
  8. SAP创建采购申请的时候供货源信息不完整
  9. Windows11 Edge斯巴达浏览器开启IE模式 解决Win11没有自带IE浏览器的问题
  10. mysql 导入 文章_水淼·MySQL文章入库助手