解决 delphi xe10.3.1 Secure File Sharing选项不起作用坑一个

Android7.0开始,uri不能直接传递文件名,需要使用FileProvider,常见的异常就是,原先在低api版本下正常的程序,升级到api26及以上时,图片分享,文字分享,程序下载更新后的启动安装,都会出错,比如出现 ava.lang.nullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.PackageInfo.LoadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object referance 或者提示 android os. FileUriExposed Exception
file: ///storage/emulated/0/Android
/data/com xxx. xxx
/files/123. jpg exposed beyond app
through Clip Data Item. getUri() 之类的错误。

那么我们可以勾选 option里面的 entitlement list 下的 Secure File Sharing 选项。

如果是新建项目,这没问题。但如果你是老项目用xe10.3.1打开的,那么勾选后实际上会不起作用。有网友说重建一下项目,但这很麻烦。经过观察,只要把新建空白项目下的 AndroidManifest.template.xml 文件拷贝覆盖掉老项目内的同名文件即可。或者直接在老项目的AndroidManifest.template.xml 文件的大概22行左右位置插入内容:<%provider%> (注:后面的方法未经实践,没仔细比较过新老两个文件的全部差异)。

经过这么折腾后重新编译,图片分享和文字分享功能已经正常,但下载更新功能还需进一步修改为provider支持 具体可参考GitHub上

https://github.com/yangyxd/FMXUI/blob/c01fb797c73af604b53091eed7f1fc66217155b4/source/UI.Utils.pas

这个文件内的 InstallApk 函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值