android库项目中的FileProvider权限

android库项目中的FileProvider权限,第1张

概述在 library project中,我使用 FileProvider作为其权限的库applicationId.现在有人使用这个库,例如在他的应用程序的两种风格,第二个将不会安装因为FileProviders冲突. 目标 能够为我的库FileProvider为应用程序的每个变体定义唯一的权限. 第一种方法 我将一个随机的int附加到权限,工作得很好. 的build.gradle static de 在 library project中,我使用 FileProvider作为其权限的库applicationID.现在有人使用这个库,例如在他的应用程序的两种风格,第二个将不会安装因为fileProvIDers冲突.

目标

能够为我的库fileProvIDer为应用程序的每个变体定义唯一的权限.

第一种方法

我将一个随机的int附加到权限,工作得很好.

的build.gradle

static def generateContentProvIDerAuthority() {    Random random = new Random()    return new StringBuilder()            .append("application.ID.of.my.library")            .append(".fileprovIDer")            .append(String.valueOf(random.nextInt(100000)))            .toString()}defaultConfig {    ...    manifestPlaceholders= [contentProvIDerAuthority: generateContentProvIDerAuthority()]}

表现

<provIDer    androID:name=".helper.fileProvIDer"    androID:authoritIEs="${contentProvIDerAuthority}"    androID:exported="false"    androID:grantUriPermissions="true">    <Meta-data        androID:name="androID.support.file_PROVIDER_PATHS"        androID:resource="@xml/filepaths"/></provIDer>

但是现在,清单会改变每一个版本,这些版本会因即时运行而变得混乱……

是否有可能获得在我的库build.gradle中使用库的应用程序的确切applicationID?

解决方法 正如CommonsWare在评论中提到的那样,在权限部分使用动态${applicationID}就足够了.

<provIDer    androID:name=".ScreenshotfileProvIDer"    androID:authoritIEs="${applicationID}.library.name.screenshots"    androID:exported="false"    androID:grantUriPermissions="true">    <Meta-data        androID:name="androID.support.file_PROVIDER_PATHS"        androID:resource="@xml/file_provIDer_paths"/></provIDer>

在CommonsWare的博客上有更详尽的解释:
https://commonsware.com/blog/2017/06/27/fileprovider-libraries.html

总结

以上是内存溢出为你收集整理的android库项目中的FileProvider权限全部内容,希望文章能够帮你解决android库项目中的FileProvider权限所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126040.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存