文档章节

Android 共享文件的 Runtime 权限

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2015/12/09 16:26
字数 916
阅读 21
收藏 2

在开发 Android 应用时,总会涉及到获取打电话、地理位置、网络等敏感的用户信息的权限,在 Android 中,联系人、当前位置等这些敏感信息都是由 permissions 保护的,Android 6.0 Marshmallow(棉花糖)API 23 中使用了一种新的权限来代替目前的安装时 Permissions ,即:runtime permissions 。但当我们打算赋予程序安装时权限的时候,总会遇到一些问题。本文由 OneAPM 工程师编译整理。

Android 中对于权限的区分主要有两种,即应用程序在 Dalvik 虚拟机上运行时所拥有的权限和在文件系统上读写的 linux 权限。

在实际开发中,我所碰到最痛苦的问题就是文件的共享,共享文件涉及到一个发送者的应用程序创建一个可访问的 URI,和接收者的应用程序从该URI读取数据流。

但在这个过程中,总会遇到两个很常见的问题:

  • 1、 创建一个 URI 是相对较容易的,但是赋予这个权限可能就会非常困难。
  • 2、receiver 预计 URI 将接收的是一个文件,但是如果这个 receiver 写的不是很好,给这些 receiver 一个相对更加通用的URI的时候,这些 receiver 可能就不知道该如何处理,而有可能引发一些意想不到的崩溃等。

OneAPM Mi 可以实时分析 APP 的慢交互和慢的事务等,还可以对 APP 的崩溃进行抓取、分析,从不同的维度分析崩溃,定位代码级别的问题,轻松实现Android 应用性能监控

崩溃总览 崩溃总览,直观分析崩溃次数、影响版本及类型等。

Crash分析 <a href="https://www.oneapm.com"><u>OneAPM</u></a> 根据操作系统类型、设备型号、崩溃状态、崩溃路径、崩溃根源进行统计;更直观地管理所有 Crash。

Interaction Trace OneAPM Interaction Trace 通过建立快照的方式;采集较慢的 Interaction 所涉及的全部性能指标,和当前的设备信息,以及设备后台运行的进程信息。

通过分析发现,是因为权限的原因,最后定位其简单的解决办法是使用外部存储,这样,所有的文件就是全局可读的。

在 Marshmallow 中,READ_EXTERNAL_STORAGE 是一个危险的权限,因为你需要在运行时候明确要求。

正常情况下,不是在所有地方都需要这个权限,如果发送者和接收者都正常的工作,他们共享文件时没有什么危险和错误。但问题是,这两个应用程序都需要处理共享文件的权限,特别是发送者的应用程序使用外部存储设备,然后接收者仍需要访问的情况下;即使你正确的完成了这些,还是有其他的大量的应用程序,那些程序仍然需要使用外部存储共享。

通常情况下,我们会想办法如何正确的共享这些文件,但是 Google 都已经帮我们做了这些事情。共享文件的人应该阅读并遵循这些规则。同时,需要注意,如果你需要你的接收机端的应用程序获取一个 URI 的话,导致外部存储请求需READ_EXTERNAL_STORAGE这个权限。

具体过程:

1、 接收一个 URI。

2、 尝试查询元数据的URI。

  • 如果成功,则没有什么问题。
  • 如果失败,则请求 READ_EXTERNAL_STORAGE 权限。

3、 读取来自 URI 的文件。

原文链接:http://blog.danlew.net/2015/10/07/sharing-files-on-android-in-a-world-with-runtime-permissions/

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
谷歌的Android Q到底有哪些新特性及变更?

Android Q 隐私更改相关介绍 存储范围变更 Android Q 改变了应用程序访问设备外部存储上文件的方式。 通过使用更细粒度的媒体特定权限替换以前的 READEXTERNALSTORAGE 和 WRITEEXTERNALSTORA...

终端研发部
04/09
72
0
Android Studio教程02-应用程序结构图及应用基础

目录 1. Android应用程序开发技术结构图 2.Android的应用基础 2.1. Android的四大组件: 2.2.启动四大组件的方法 2.3. 清单文件 1. Android应用程序开发技术结构图 一、应用程序层 该层提供一...

Bricker666
01/16
0
0
Android之旅[1] - Architecture

本文只要是阅读Anatomy-Physiology-of-an-Android的随笔记录。 Anatomy意为解剖,是一种静态视角。Physiology意为生理,是一种动态视角。原文就是通过这两种角度来分析Android的。 Android基...

开源中国驻成都办事处
2012/11/19
176
0
安卓应用安全指南 4.6.3 处理文件 高级话题

安卓应用安全指南 4.6.3 处理文件 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.6.3.1 通过文件描述符的文件共享 有一种...

apachecn_飞龙
2018/03/22
0
0
【Android】Android M 新的运行时权限开发者需要知道的一切

参见 Android M 新的运行时权限开发者需要知道的一切 英文原文:Everything every Android Developer must know about new Android's Runtime Permission...

xesam
2015/11/10
76
0

没有更多内容

加载失败,请刷新页面

加载更多

Win10如何修改入站规则

桌面->网络 右击 -> 属性 -> 防火墙 点击 高级设置 右击入站规则 -> 新建规则 根据端口设置入站规则

恒宝乐园
29分钟前
7
0
在PPT中将照片变裸眼3D效果怎样操作?分享操作技巧,帮你快速实现

PPT的使用相信大家都不陌生,使用最多的就是制作PPT对工作进行汇报,对新项目进行展开讨论。其实在PPT中还可以设计海报,制作高逼格封面以及将照片变为3D效果等偏设计类的操作。今天将以如何...

百因必有果
39分钟前
7
0
苹果的M4A音频格式怎么转换成FLAC

最新版的苹果手机iPhone 11其完美的系统和华丽的外观真是让人想“剁手”。不过使用过苹果手机或者iPad等移动设备的朋友可能知道,其音乐文件为M4A音频格式。而这种文件格式最初是在iTunes以及...

软件分享达人
40分钟前
10
0
提现设置

提现设置 用户如何提现? 1.打开后台-设置-交易设置-提现设置 最低提现金额:提现金额将不小于此值才能提现 最小提现单元:每次以最小提现单元金额的整数倍提现 提现提示信息:商家可填写提示...

Geek-Chic
今天
3
0
php的redis.so扩展安装【PHP】

一、资源准备,下载 不仅是redis.so,安装其他拓展的方式也类似 第一种方式: 下载:wget https://github.com/phpredis/phpredis/archive/develop.zip 解压:unzip develop.zip 进入目录:c...

一代码农码一代
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部