Android官方开发文档Training系列课程中文版:分享文件之配置文件共享

原文地址:http://android.xsoftlab.net/training/secure-file-sharing/index.html

导言

APP经常需要给其它的APP提供一个或多个文件。举个例子,相册APP可能需要提供文件以供编辑,或者一个文件管理的APP可能希望用户在外部存储器中的两个区域之间复制粘贴文件。其中一种方式就是发送端的APP可以分享文件来响应接收端APP的请求。

在所有的例子中,使一个文件从你的APP到另一个APP的唯一安全方式就是发送这个文件内容的URI地址到接收端APP,并且授予一个临时的访问权限给这个URI。带有临时URI访问权限的内容URI是安全的,因为它只会被应用于接收这个URI的那个APP,并且会这个权限会自动终止。Android的FileProvider组件提供了getUriForFile()方法来生成该文件的内容URI地址。

如果你想分享少量的文本或者数字型数据,你应该发送一个Intent,使这个Intent携带这些数据给其它APP。有关学习如何使用Intent来发送简单的数据,参见训练课程Sharing Simple Data。

这节课解释了如何使用Android FileProvider组件生成的内容URI安全的在APP之间共享文件。

设置文件共享

为了从你的APP安全的提供文件给其它APP,你需要配置你的APP以便对文件提供安全的防护。Android的FileProvider组件会基于在XML中提供的参数对文件的相应URI地址,。这节课展示了如何给APP添加默认的FileProvider实现,以及展示如何指定你要分享给其它APP的文件。

Note:FileProvider是v4支持包的一部分。有关程序中包含该库的更多信息,请参见:Support Library Setup。

指定FileProvider

给APP定义FileProvider需要在清单文件中登记。在被登记的条目需要指定URI的权限,和指定XML文件的文件名一样,这里也需要指定被分享文件的目录。

下面这一小段代码展示了如何在清单文件中添加< provider>元素,在这个元素中指明了FileProvider类,权限和XML文件名:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp"><application
        ...><provider
            android:name="android.support.v4.content.FileProvider"android:authorities="com.example.myapp.fileprovider"android:grantUriPermissions="true"android:exported="false"><meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/filepaths" /></provider>...</application>
</manifest>

在这个例子中,属性android:authorities指明了由FileProvider生成的URI的权限,这里的权限值是com.example.myapp.fileprovider。在自己的APP中,权限是由APP的android:package值以及跟随的”fileprovider”字符串组成。有关学习更多权限值的课程,请参见话题:Content URIs以及android:authorities的属性文档。

< provider>的子元素< meta-data>指向了一个XML文件,这个XML文件指定了你想要分享出去的目录。属性android:resource的值是要分享文件的路径与名称,只是这个文件名不带.xml后缀。文件的内容会在下节课描述。

指定可搜索目录

一旦在清单文件中添加了FileProvider,那么你还需要指定将要分享的文件目录。如果要指定,首先需要在工程的res/xml/子目录中创建一个名为filepaths.xml的文件。在这个文件中,通过给每个目录添加相应的XML元素来指定它们的目录。下面代码展示了res/xml/filepaths.xml文件中的样例,这段代码中还演示了如何分享内部存储器中files/目录下的子目录:

<paths><files-path path="images/" name="myimages" />
</paths>

在这个例子中,标签分享了一些目录,这个目录位于APP在内部存储器中的files/目录下。属性path分享了files/目录的子目录images/目录,属性name则用于告诉FileProvider给文件的URI添加files/images/子目录下的路径段 myimages。

< paths>元素可以拥有多个子元素,每一个元素分别指向相应的分享目录。在附加的元素中,你可以使用元素来分享外部存储器上的目录,使用 元素分享内部存储器上的目录。学习更多有关分享指定目录的子元素,请参见FileProvider的引用文档。

Note:使用XML文件是分享指定目录的唯一方式,你不可以动态的添加目录。

你现在有了使用FileProvider对文件生成相关URI的完整说明。当你的APP需要为文件产生URI的时候,它包含了< provider>元素指定的权限,以及文件的路径myimages/,还有文件的名称。

举个例子,如果你通过这节课中的所有片段定义了一个FileProvider,以及你要请求一个default_image.jpg文件的URI地址,那么FileProvider会返回如下的URI:

content://com.example.myapp.fileprovider/myimages/default_image.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 基于图卷积网络的跨语言图谱实体对齐

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究兴趣&#xff1a;知识图谱问答本文提出了一种基于图卷积网络的跨语言实体对齐方法&#xff0c;通过设计一种属性 embedding 用于 GCN 的训练&#xff0c;发现GCN能同时学习到特征 embedding 和属性 e…

面向中文自然语言处理的60余类系统开源实践项目与工业探索索引

项目介绍 面向中文自然语言处理的六十余类实践项目及学习索引&#xff0c;涵盖语言资源构建、社会计算、自然语言处理组件、知识图谱、事理图谱、知识抽取、情感分析、深度学习等几个学习主题。包括作者个人简介、学习心得、语言资源、工业落地系统等&#xff0c;是供自然语言处…

Android官方开发文档Training系列课程中文版:分享文件之分享一个文件

原文地址&#xff1a;http://android.xsoftlab.net/training/secure-file-sharing/share-file.html 一旦APP设置通过URI的方式共享文件&#xff0c;你需要响应其它APP请求这些文件的请求。响应这些请求的一种方式是&#xff0c;在服务端APP上提供一个文件选择接口&#xff0c;…

大众点评搜索基于知识图谱的深度学习排序实践

1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口&#xff0c;是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样&#xff0c;并且由于对接业务种类多&#xff0c;流量差异大&#xff0c;为大众点评搜索&#xff08;下文简称点评搜索&#xff09;…

论文浅尝 \ 联合知识图谱实例和本体概念的通用表示学习

论文笔记整理&#xff1a;周虹廷&#xff0c;浙江大学研究生。研究方向&#xff1a;知识图谱&#xff0c;图表示学习等。论文链接&#xff1a;http://web.cs.ucla.edu/~yzsun/papers/2019_KDD_JOIE.pdf本文是发表在KDD 2019上的关于知识图谱表示学习的论文。现有知识图谱表示模…

手握顶会顶刊论文,自信满满面试算法岗竟被刷?

2020国内深度学习框架领域百花齐放。各大公司也都陆续推出了自己的框架&#xff0c;大大推动了深度学习的发展。深度学习俨然已经渗入到我们生活中的每个角落&#xff0c;给生活带来极大便利。深度学习能够针对生产生活所面临的复杂问题&#xff0c;给出高准确率、操作简易、成…

爬取热门网站的热榜,集中展示

爬取热门网站的热榜&#xff0c;集中展示&#xff1b;Integrate and display hot billboard or ranked topic from hot Chinese websites 抓取知乎热榜数据存入列表 #!/usr/bin/env python # encoding: utf-8__author__ HZTimport requests import re from bs4 import Beaut…

Android官方开发文档Training系列课程中文版:分享文件之请求一个共享文件

原文地址&#xff1a;http://android.xsoftlab.net/training/secure-file-sharing/request-file.html 当APP需要访问一个被其它APP所共享的文件时&#xff0c;这个APP通常需要发送一个请求给共享文件的那个APP(服务端)&#xff0c;在大多数的情况下&#xff0c;这个请求会启动…

LeetCode 110. 平衡二叉树(二叉树高度)

1. 题目 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。…

人物志 | 美团技术委员会前端通道主席洪磊:爱折腾的斜杠青年

洪磊&#xff0c;2013年加入美团&#xff0c;目前是美团外卖事业部终端组的负责人&#xff0c;也是美团技术委员会前端通道主席。在加入美团之前&#xff0c;洪磊的职业生涯可以用“跌宕起伏”来形容。他就读于中南财经政法大学&#xff0c;曾任职于雅虎中国&#xff0c;先后担…

论文浅尝 | 可建模语义分层的知识图谱补全方法

本文转载自公众号&#xff1a;PaperWeekly。论文作者&#xff1a;蔡健宇&#xff0c;中国科学技术大学&#xff0c;研究方向&#xff1a;知识图谱近些年&#xff0c;知识图谱&#xff08;Knowledge Graph&#xff09;在自然语言处理、问答系统、推荐系统等诸多领域取得了广泛且…

美团背后的商业模式是什么?后疫情时代该走向何方?

文 | King James知乎本文已获作者授权&#xff0c;禁止二次转载2020年的疫情&#xff0c;让10年前的一部剧再次进入人们的视线中&#xff0c;那就是《我的团长我的团》传统社区团购和各大互联网巨头都广发英雄帖招聘社区团购的团长&#xff0c;感觉回到了10年前那场“百团大战”…

Android官方开发文档Training系列课程中文版:分享文件之获取文件信息

原文地址&#xff1a;http://android.xsoftlab.net/training/secure-file-sharing/retrieve-info.html 之前的课程讲述了客户端APP试图与含有文件的URI一同运行&#xff0c;APP可以请求服务端APP的文件信息&#xff0c;包括文件的数据类型以及文件的大小。这些数据类型可以帮助…

LeetCode 783. 二叉搜索树结点最小距离(中序遍历)

1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。 示例&#xff1a;输入: root [4,2,6,1,3,null,null] 输出: 1 解释: 注意&#xff0c;root是树结点对象(TreeNode object)&#xff0c;而不是数组。给定的树 [4,2,6,1,3,null,null] 可表示为下图…

Kubernetes 1.20 版本开始将弃用 Docker,是时候拥抱 Containerd 和 Podman 了!

Kubelet 中对 Docker 支持被弃用&#xff0c;并将在以后的版本中删除。Kubelet 使用一个名为 dockershim 的模块&#xff0c;该模块实现了对Docker的 CRI 支持&#xff0c;在此PR后续版本将删除dockershim。 Kubectl 弃用 --delete-local-data 参数。 名词解释 上面中提到两个名…

开源开放 | OpenKG 更新发布新冠概念、防控和流行病等多个知识图谱

近日&#xff0c;OpenKG 继续更新发布多个新冠知识图谱&#xff0c;其中包括哈尔滨工业大学构建的新冠概念图谱&#xff0c;武汉科技大学与东南大学联合构建的新冠防控图谱。同时&#xff0c;更新了由 IBM 中国研究院构建的流行病学图谱 V1.1。OpenKG 发布的所有新冠知识图谱都…

客户端单周发版下的多分支自动化管理与实践

背景 目前&#xff0c;互联网产品呈现出高频优化迭代的趋势&#xff0c;需求方希望尽早地看到结果&#xff0c;并给予及时反馈&#xff0c;所以技术团队需要用“小步快跑”的姿势来做产品&#xff0c;尽早地交付新版本。基于以上背景&#xff0c;美团客户端研发平台适时地推行了…

无意中发现了一位清华大佬的代码模版

对于刷题相关的文章&#xff0c;在之前我也推荐过不少&#xff0c;今天在给大家推荐一份算法刷题笔记&#xff0c;这份笔记与以往的刷题有所区别&#xff0c;作者把 Leetcode 一千多道题都进行了系统的整理&#xff0c;并且对于每一道题的代码&#xff0c;都要求 beat 100%。作…

Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备

原文地址&#xff1a;http://android.xsoftlab.net/training/beam-files/index.html 导言 Android允许你通过Android Beam文件传输特性在两台设备之间传送大文件。这个特性拥有一个简单的API&#xff0c;允许用户通过简单的设备接触来启动一个传输进程。在响应端&#xff0c;…

LeetCode 998. 最大二叉树 II

1. 题目 向最大二叉树插入一个值&#xff1b; 如果该值大于根节点&#xff0c;则子树必须在该值的左边&#xff1b; 如果该值小于根节点&#xff0c;则该值必须在根节点的右子树 2. 解题 class Solution { public:TreeNode* insertIntoMaxTree(TreeNode* root, int val) {if(…