当前位置:首页 » 办公资讯 » 怎样生成一个文件的uri

怎样生成一个文件的uri

发布时间: 2023-05-21 14:17:23

❶ 利用 Android 系统原生 API 实现分享功能(2)

在之前的一篇文章 利用 Android 系统原生 API 实现分享功能 中主要说了下实现流程,但具体实施起来其实还是有许多坑要面对。那这篇文章就是提供一个封装好的 Share2 库供大家参考。

GitHub 项目地址:Share2

看过上一篇文章的同学应该知道,要调用 Android 系统内建的分享功能,主要有三步流程:

更多相关内容请参考上一篇,这里就不再重复赘述了。

知道大致的实现流程后,其实只要解决下面几个问题后就可以具体实施了。

这其实是直接决定了最终的实现形态,我们知道常见的使用场景中,只是为了在应用间分享图片和一些文件,那对于那些只是分享文本的产品而言,两者实现起来要考虑的问题完全不同。

所以为了解决这个问题,我们可以预先定好支持的分享内容类型,针对不同类型可以进行不同的处理。

在 Share2 中,一共定义了5种类别的分享内容,基本能覆盖常见的使用场景。在调用分享接口时可以直接指定内容类型,比如像文本、图片、音视频、已经其他各种类型文件。

对于不同类别的内容,可能会有不同的来源。比如文本可能就只是一个字符串对象,而对于分享图片或其他文件,我们需要一个 Uri 来标识一个资源禅洞轮。这其实就引出来具体实施时的一个大问题,如何获取要分享文件的 Uri,并且这个 Uri 要能被接收分享内容的应用处理才行 。

那么,如何获取要分享内容文件的 Uri?如果处理才能让接收方贺信也能够根据 Uri 获取到文件?

我们把文件 Uri 的来源划分为下面三种类型:

常见场景 :通过文件选择器获取一个文件的 Uri

通过这种方式获取到的 Uri 是由系统 ContentProvider 返回的,在 Android 4.4 之前的版本和之后的版本有较大的区别,我们后面再说怎么处理。只要先记住这种系统返回给我们的 Uri 就行了。

比如调用系统相机进行拍照或录制音视频,要传入一个生成目标文件的 Uri ,从 7.0 开始我们需要用到 FileProvider 来实现。

如果用到了 FileProvider 就要注意跟系统 ContentProvider 返回 Uri 的区别,比如我们在 Manifest 中对 FileProvider 配置 android:authorities="com.xx.xxx.fileProvider" 属性,那这时系统返回的 Uri 格式就变成了 : content://com.xx.xxx.fileProvider... ,对于这种类型的 Uri 我们姑且叫 自定义 FileProvider 返回的 Uri ,后面一并说怎么处理。

我们调用 new File 时需要传入指定的文件路径,这个绝对路径通常是: /storage/emulated/0/... 这种样式,我们要想调用分享时也要变成 Uri 的形式才可以,那么如何把文件路径变成一个文件 Uri ?这个问题下面也一并进行回答。

前面提到了文件 Uri 的三种分类,对应不同类型处理方式也不同,不然你最先遇到的问题就是:

这是由于对系统返回的 Uri 缺失访问权限导致,所以要对应用进行临时访问 Uri 的授权才行,不然会提示权限缺失。

对于要分享系统返回的 Uri 我们可以这样进行处理:

需要注意的是对于自定义 FileProvider 返回 Uri 的处理,即使是设置临时访问权限,但是分享到第三方应用也会无法识别该 Uri

典型的场景就是,我们如果把自定义 FileProvider 的返回的 Uri 设置分享到微信或 QQ 之类的第三方应用,会提示文件不存在,这是因为他们无法识别该 Uri。

关于这个问题的处理其实跟下面要说的把文件路径变成系统返回的 Uri 一样,我们只需要把自定义 FileProvider 返回的 Uri 变成第三方应用可以识别系统返回的 Uri 就行了。

创建 FileProvider 时需要传入一个 File 对象,所以直接可以知道文件路径,那就把问题都转换成了: 如何通过文件路径获取系统返回的 Uri

下面是根据传入的 File 对象和类型来查询系统 ContentProvider 来获取相应的 Uri,已经按颤滑照不同文件类型在不同系统版本下的进行了适配。

其中 forceGetFileUri 方法是通过反射实现的,处理 7.0 以上系统的特殊情况下的兼容性,一般情况下不会调用到。Android 7.0 开始不允许 file:// Uri 的方式在不同的 App 间共享文件,但是如果换成 FileProvider 的方式依然是无效的,我们可以通过反射把该检测干掉。

通过 File Path 转成 Uri 的方式,我们最终统一了调用系统分享时传入内容 Uri 的三种不同场景,最终全部转换为传递系统返回的 Uri,让第三方应用能够正常的获取到分享内容。

Share2 按照上述方法进行了具体实施,可以通过下面的方式进行集成:

分享图片到指定界面,比如分享到微信朋友圈

GitHub 项目地址:Share2

❷ .net 如何生成URL编码

1.网液闭页里面的话,直接派埋改就用Server.UrlEncode就尘判好了
2.WinForm里面,可以引用System.Web,然后使用 System.Web.HttpUtility.UrlEncode()

❸ android 7.0 调用相机FileProvider生成的URI,作为相机开发的接收者,怎么使用URI

android 7.0以租旅上, 禁止使用Uri中包含一个文件的绝对路径, 必须弊答凳要使用content方举桥式传递文件路径

❹ c# 如何获取字符串中域名

用这个串生成一个uri对象,然后从uri对象可以得到所有分解的部分。

Uri u = new Uri("http://www..com/sasasasas/fdfddfx.php");

string sHost = u.Host;
string sPort = u.Port;

还有以下的属性可用:
名称 说明
AbsolutePath 获取 URI 的绝对路径。
AbsoluteUri 获取绝对 URI。
Authority 获取服务器的域名系统 (DNS) 主机袭手名或 IP 地址和端口号。
DnsSafeHost 获得可安全用于 DNS 解析的未转义主机名。
Fragment 获取转义 URI 片段。
Host 获取此实例的主机部分。
HostNameType 获取 URI 中指定的主机名的类型。
IsAbsoluteUri 获取一个值,该值指示 Uri 实例是否为绝对 URI。
IsDefaultPort 获取一个值,该值指示 URI 的端口值是否为此方案的默认值。
IsFile 获取一个值,该值指示指定的 Uri 是否为文件 URI。
IsLoopback 获取一个值,该值指示指定的 Uri 是否引用了本地乱禅轮主机。
IsUnc 获取一个值,该值指示指定的 Uri 是否为统一命名约定 (UNC) 路径。
LocalPath 获取文件名的本地操作系统表示形式。
OriginalString 获取传递给 Uri 构造函数的原始 URI 字符串。
PathAndQuery 获取用问号 (?) 分隔的 AbsolutePath 和 Query 属性。
Port 获取此 URI 的端口号。
Query 获取指定 URI 中包括的任何查询信息。
Scheme 获取此 URI 的方哗信案名称。
Segments 获取包含构成指定 URI 的路径段的数组。
UserEscaped 指示 URI 字符串在创建 Uri 实例之前已被完全转义。
UserInfo 获取用户名、密码或其他与指定 URI 关联的特定于用户的信息。

❺ flash的URL是什么意思,URL是怎么生成的呀

分类: 教育/科学 >> 学习帮助
解析:

就是链接地址,是自己写的啊

URL:

URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说,URL是Inter上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是着名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL的格式URL的格式由下列三部分组成:

第一部分是协议(或称为服务方式);

第二部分是存有该资源的主机IP地址(有时也包括端口号);

第三部分是主机资源的具体地址。,如目录和文件名等。

第一部分和第二部分之间用“:”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时春配可以省略。

URL示例

文件的URL: 用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。

例一:fileftp.linkwan/pub/files/foobar.txt

代表存放主机ftp.linkwan上的pub/files/目录下的一个文件,文件名是foobar.txt。

例二:fileftp.linkwan/pub

代表扒厅指主机ftp.linkwan上的目录/pub。

例三:fileftp.linkwan/

代表主机ftp.linkwan上的根目录。

Gopher的URL: Gopher服务器有可能使用特殊的端口,在这种情况下,主机IP地址与端口之间要用“:隔开。

例一:gophergopher.linkwan/

表示主机gopher.linkwan上的gopher服务器。

例二:gophergopher.banzai.e:1234

表示主机gopher.banzai.e上的gopher服务器,在端口1234上。

网络新闻的URL: 利用URL表示网络新闻组时,如果是use的话只要指定出新闻组的名字即可。

例如:news:rec.gardening

表示use上的rec.gardening新闻组(园艺)。

HTTP的 URL:

使用超级文本传输协议HTTP,提供超级文本信息服务的资源。

例一:linkwan/111/wele

其计算机域名为linkwan。超级文本文件(文伏游件类型为)是在目录/111下的wele。

例二:linkwan/talk/talk1

其其计算机域名为linkwan。超级文本文件(文件类型为)是在目录/talk下的talk1。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。

URL的缺点

最大的缺点:当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即“通用资源标识”(参见RFC 1630)、URN(Uniform Resource Name)即“统一资源名”和URC(Uniform Resource Citation)即“统一资源引用符”等。

热点内容
马路上汽车的噪音在多少分贝 发布:2023-08-31 22:08:23 浏览:1881
应孕棒多少钱一盒 发布:2023-08-31 22:08:21 浏览:1352
标准养老金一年能领多少钱 发布:2023-08-31 22:05:05 浏览:1639
湖北通城接网线多少钱一个月 发布:2023-08-31 21:59:51 浏览:1718
开随车吊车多少钱一个月 发布:2023-08-31 21:55:06 浏览:1481
京东付尾款怎么知道前多少名 发布:2023-08-31 21:52:58 浏览:1805
在学校租铺面一个月要多少钱 发布:2023-08-31 21:52:09 浏览:1941
2寸有多少厘米 发布:2023-08-31 21:50:34 浏览:1586
知道电压如何算一小时多少电 发布:2023-08-31 21:46:20 浏览:1566
金手镯54号圈周长是多少厘米 发布:2023-08-31 21:44:28 浏览:1741