在android6.0 以上如果想访问外置SDCARD,需要再申请如下权限:

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />

该权限在frameworks/base/data/etc/platform.xml 定义如下:

<permission name="android.permission.WRITE_MEDIA_STORAGE" >
        <group gid="media_rw" />
        <group gid="sdcard_rw" />
     </permission>

而该文件中 <permission name="android.permission.READ_EXTERNAL_STORAGE" /> 权限不能对外置SDCARD进行读写操作,如果强行加上        <group gid="media_rw" />    <group gid="sdcard_rw" /> 会导致不能开机(android8.1已测试)!

如果想申请WRITE_MEDIA_STORAGE权限,需要在所写APP的Android.mk中具有如下限制:

LOCAL_CERTIFICATE := platform(平台签名)

LOCAL_PRIVILEGED_MODULE := true(编译到system/priv-app目录)

同时如果想把文件存储到外置SDCARD,还需要引用

LOCAL_JAVA_LIBRARIES += mediatek-framework

使用vendor/mediatek/proprietary/frameworks/base/core/java/com/mediatek/storage/StorageManagerEx.java的

getDefaultPath()来获取用户所选择的的存储是内置存储还是外置SDCARD

    /*** Returns default path for writing.* @hide* @internal*/public static String getDefaultPath() {String path = STORAGE_PATH_SD1;boolean deviceTablet = false;boolean supportMultiUsers = false;path = SystemProperties.get(PROP_SD_DEFAULT_PATH, path); //先判斷外置SDCARDLog.i(TAG,"StorageManagerEx::getDefaultPath...path1:"+path);if(path.equals("")){path = Environment.getExternalStorageDirectory().getAbsolutePath(); //如果外置SDCARD為空,則獲取內置SDCARD}Log.i(TAG, " Default path taken as primary storage, path=" + path);//@ }return path;}

android8.0 对于外置SDCARD的访问(MTK 平台)相关推荐

  1. Android5.0后外置SDCard读写

    首先得明确一个概念:Android有获取外置SDCard路径的API,但是这个外置 SDCard的概念是指系统内部分出来的外置和我们插上的那张外置SDCard, 系统对于这两种SDCard是区分不出来 ...

  2. Android 8.0 中如何读取内部和外部存储以及外置SDcard

    最近碰到询问我这个读取SDcard的问题, 很久没有看这部分了,所以大致看了一下, 顺便记录一下.在Android 8.0上做了测试. 一般的Android App能读取的存储空间主要有三种: app ...

  3. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  4. Android 8.0 (35)----Android8.0.0-r4的OTA升级流程

    Android8.0.0-r4的OTA升级流程 原网址:https://blog.csdn.net/dingfengnupt88/article/details/52875228  Android系统 ...

  5. uiautomatorviewer_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法

    问题:Android8.0以上,打开uiautomatorviewer.bat,报错,提示:Unexpected error while obtaining UI hierarchy 解决办法: 可以 ...

  6. android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头

    概述 Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口.网络摄像头通常支持 USB ...

  7. Android 8.0 学习(17)---Android8.0中对指纹的新要求

    Android8.0中对指纹的新要求 784 我们先来看一张指纹在Android6.0版本上的架构层次图: 指纹应用层,也就是手机上的指纹设置,这是Android系统层定义的指纹管理入口. 1,sys ...

  8. Android 8.0 学习(14)---Android8.0适配分析

    公司项目Android8.0适配分析 1. 官方推荐的兼容测试方式  2. Android8.0行为变更说明  Android 8.0 行为变更包括两个部分:针对所有 API 级别的应用和针对 And ...

  9. android8.0学习(1)---Android Treble 概述

    1 Android Treble Android 8.0 版本的一项新元素是 Project Treble.这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松. ...

最新文章

  1. 2021 AAAI Fellow名单重磅出炉,华人学者遗憾连续两年无缘入选 | AI日报
  2. 如何将机器学习模型的正确率从 80%提高到 90%以上
  3. 拯救你的年终报告!巧用可视化图表秀出年终业绩
  4. 【译】三层架构代码生成器(NetTierGenerator)
  5. mysql如何给一个数据库所有表都增加一个字段?
  6. POJ2104(K-th Number)
  7. JavaScript中实现深浅拷贝
  8. JavaScript函数 思维导图
  9. 关于Postman导入json文件报:failed to import data format not recognized异常的处理
  10. IBM与广东中医院 携手共建智慧医疗
  11. java translate_java – 当使用translate()方法时,JPanel中的Tit...
  12. nginx代理frps后出现 http proxy request error: no such domain
  13. C. Garland dp
  14. List中remove()方法的陷阱,开发谨记!
  15. matlab石碑提取,罗塞塔石碑-高尔夫代码:Tic Tac T
  16. 【阅读】《法治的细节》笔记整理
  17. 作业:计数器仿真实验
  18. 学习PrintWriter类
  19. HtmlParser + HttpClient 实现爬虫
  20. openfoam v8 波浪算例学习日记: 6.运行算例

热门文章

  1. Linux系统基础小白学习(更新中)
  2. Detecting Holes in Point Set Surfaces 笔记
  3. 微信小程序接口文档PHP,微信小程序API 导航
  4. 百度地图 JS API Marker自定义图标
  5. 通俗易懂理解几何光学(四)光学系统中的光阑与光束限制
  6. 图解Http协议 url长度限制
  7. chrome:initiator使用
  8. 16天记住7000考研词汇
  9. 百度地图实现鼠标绘制多边形并获取所有点坐标
  10. NatureProtocols:使用MicrobiomeAnalyst统计和功能分析微生物组数据