READ_EXTERNAL_STORAGE 在23之上的权限获取 在两个app上同样的申请 不同的结果 why
来源:互联网 发布:东吴证券怎么样 知乎 编辑:程序博客网 时间:2024/06/08 13:00
网上所有的信息都显示 在api>=23 权限需要动态申请,
READ_EXTERNAL_STORAGE
可是目前手头上有两个app, 一个直接在Androidmanifest上定义就直接有了权限, 如A
另一个在Androidmanifest 申请后,23之下可以申请到权限,23之上就不能申请到权限 B
是个好的问题
进一步定位问题:
将A中 READ_EXTERNAL_STORAGE删掉依然可以获取到权限,这可就奇怪了,看了下 另一个和External_storage相关的权限是WRITE_EXTERNAL_STORAGE, 如有write权限自然读的权限就有了,所以将A中write 权限删掉,果然 没有权限了。看来问题出在 WRITE_EXTERNAL_STORAGE上。
可是我B上也申请了WRITE_EXTERNAL_STORAGE呀。
问题调研继续进行中
调研完毕,虽然结果我不想承认 是因为targetSdkVersion的原因在A里 是22 即6.0之下, B是25
在我的认识中:
targetSdkVersion 是最优适配的api版本,即所有框架层代码都是以 targetSdkVersion的版本的方法为标准,如果此app装进api 16/25的机器,那16/25中方法名相同但功能不同的功能以targetSdkVersion的方法为准。可是权限的自动申请和动态申请是以app装的机器有关。但是明显,此次的问题颠覆了我根深蒂固觉得认识很清楚的知识点,但是这就是学习过程。
那么真实的targetSdkVersion 到底是什么呢?
targetSdkVersion 是Android系统提供向前兼容的主要手段。随着Android系统的升级,某个系统的api或模块的行为可能会发生改变,但是为了保证Apk的行为和以前API相同,所以设置targetSdkVersion,只要targetSDKVersion不变,及时apk安装在新的Android系统上,其行为还是保持老的系统上的行为,这样就保证了系统对老应用的向前兼容(感觉和我的理解一样呀)
那类似这种需要手动的权限我们都改了target偏小一点就能避开 听起来像个bug 而且主要APi方法改动也不是很大 那是不是targetSdkVersion偏小一点更好??
那也不一定,如果targetSdkVersion小的话 那么23的新特性也就没了
- READ_EXTERNAL_STORAGE 在23之上的权限获取 在两个app上同样的申请 不同的结果 why
- 如何在手机上安装两个同样的app
- java转义符同样的代码在cmd下和eclipse下运行结果不同
- golang(cgo)---如何在两个不同的package中使用同样的自定义数据类型?
- Java同样的汉字在服务器和本地的电脑上URLencode 出来的结果不一致
- Java同样的汉字在服务器和本地的电脑上URLencode 出来的结果不一致
- 同样的一辈子,不同的结果!
- 读外部存储的权限READ_EXTERNAL_STORAGE
- 如何在一个设备上安装一个App的两个不同版本
- 怎样能在大小不同的屏幕上显示同样的网页(自适应网页设计)?
- 使用css在不同页面上使用同样的导航代码
- vmstat结果在不同操作系统上的解释
- 同样的内核配置,不同的编译器结果不同
- 同样的VS2003环境,在2000下和在XP编译出来的结果不一样
- 打印同样一个数据,竟然出现不同的结果,解决方法。
- 同样的两个梦
- 怎么控制两个进程执行在不同的两个核上?
- 两个进程访问同样的逻辑地址物理地址为何不同
- CF414E,splay维护括号序列,码农题
- vs 2013的一些设置
- 利用Cordova对H5页面进行APP开发打包
- 进程/线程池/进程ID/进程间的通讯pipe/Queue/Manager/进程同步
- 深机笔记
- READ_EXTERNAL_STORAGE 在23之上的权限获取 在两个app上同样的申请 不同的结果 why
- 51nod 1275 连续子段的差异
- 使用Session防止表单重复提交
- POJ2549-Sumsets
- 微信开发平台-获取用户信息(一)
- 数据库索引的优缺点
- 学习笔记:vijos1037[差值dp] 自己也不知道怎么就搞出来了
- 单机MySQL到NoSQL集群 腾讯存储进阶路
- restart