android8.0 对于外置SDCARD的访问(MTK 平台)
在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 平台)相关推荐
- Android5.0后外置SDCard读写
首先得明确一个概念:Android有获取外置SDCard路径的API,但是这个外置 SDCard的概念是指系统内部分出来的外置和我们插上的那张外置SDCard, 系统对于这两种SDCard是区分不出来 ...
- Android 8.0 中如何读取内部和外部存储以及外置SDcard
最近碰到询问我这个读取SDcard的问题, 很久没有看这部分了,所以大致看了一下, 顺便记录一下.在Android 8.0上做了测试. 一般的Android App能读取的存储空间主要有三种: app ...
- Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...
- Android 8.0 (35)----Android8.0.0-r4的OTA升级流程
Android8.0.0-r4的OTA升级流程 原网址:https://blog.csdn.net/dingfengnupt88/article/details/52875228 Android系统 ...
- uiautomatorviewer_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法
问题:Android8.0以上,打开uiautomatorviewer.bat,报错,提示:Unexpected error while obtaining UI hierarchy 解决办法: 可以 ...
- android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头
概述 Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口.网络摄像头通常支持 USB ...
- Android 8.0 学习(17)---Android8.0中对指纹的新要求
Android8.0中对指纹的新要求 784 我们先来看一张指纹在Android6.0版本上的架构层次图: 指纹应用层,也就是手机上的指纹设置,这是Android系统层定义的指纹管理入口. 1,sys ...
- Android 8.0 学习(14)---Android8.0适配分析
公司项目Android8.0适配分析 1. 官方推荐的兼容测试方式 2. Android8.0行为变更说明 Android 8.0 行为变更包括两个部分:针对所有 API 级别的应用和针对 And ...
- android8.0学习(1)---Android Treble 概述
1 Android Treble Android 8.0 版本的一项新元素是 Project Treble.这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松. ...
最新文章
- 2021 AAAI Fellow名单重磅出炉,华人学者遗憾连续两年无缘入选 | AI日报
- 如何将机器学习模型的正确率从 80%提高到 90%以上
- 拯救你的年终报告!巧用可视化图表秀出年终业绩
- 【译】三层架构代码生成器(NetTierGenerator)
- mysql如何给一个数据库所有表都增加一个字段?
- POJ2104(K-th Number)
- JavaScript中实现深浅拷贝
- JavaScript函数 思维导图
- 关于Postman导入json文件报:failed to import data format not recognized异常的处理
- IBM与广东中医院 携手共建智慧医疗
- java translate_java – 当使用translate()方法时,JPanel中的Tit...
- nginx代理frps后出现 http proxy request error: no such domain
- C. Garland dp
- List中remove()方法的陷阱,开发谨记!
- matlab石碑提取,罗塞塔石碑-高尔夫代码:Tic Tac T
- 【阅读】《法治的细节》笔记整理
- 作业:计数器仿真实验
- 学习PrintWriter类
- HtmlParser + HttpClient 实现爬虫
- openfoam v8 波浪算例学习日记: 6.运行算例