贵州省建设厅网站公众一体化平台,微网站访问量,wordpress做的网站吗,网页界面设计中表单的组成部分有哪些提示信息原文地址#xff1a;http://android.xsoftlab.net/training/secure-file-sharing/index.html
导言
APP经常需要给其它的APP提供一个或多个文件。举个例子#xff0c;相册APP可能需要提供文件以供编辑#xff0c;或者一个文件管理的APP可能希望用户在外部存储器中的两个区域…原文地址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:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.myappapplication...providerandroid:nameandroid.support.v4.content.FileProviderandroid:authoritiescom.example.myapp.fileproviderandroid:grantUriPermissionstrueandroid:exportedfalsemeta-dataandroid:nameandroid.support.FILE_PROVIDER_PATHSandroid:resourcexml/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/目录下的子目录
pathsfiles-path pathimages/ namemyimages /
/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