动态设置ContentProvider的权限

2024-01-18

也许标题有点误导。我的问题是我有一个 Android 库项目,该项目在两个标准 Android 项目之间共享:一个用于应用程序的免费版本,另一个用于付费版本。该库当前拥有 ContentProvider 的代码,包括一个合约类,其中包含多个静态字符串变量,用于 URI 和列名称等内容。现在我希望 URI 的“权限”根据正在使用该库的应用程序进行更改。我想到的一种解决方案是将权限存储为字符串资源,并在运行时将该字符串加载到静态最终 String 变量中。但是,我不确定如何执行此操作,因为合约类有一个私有构造函数,并且没有 Context 对象来加载字符串资源。还有哪些其他选项可以解决我的问题?


对于那些使用较新版本的构建工具的人来说,这是一个更好的解决方案:使权限与您的应用程序 ID 相关。您可以使用自动执行此操作${applicationId},它会在构建过程中扩展为应用程序的应用程序 ID。

<provider
    android:name=".MyContentProvider"
    android:authorities="${applicationId}.provider"/>

假设您的应用程序 ID 是com.example.app.paid and com.example.app.free。当你构建你的应用程序时,权限将变成com.example.app.paid.provider and com.example.app.free.provider,相应地。

要在代码中引用提供者权限,请使用BuildConfig.APPLICATION_ID + ".provider".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态设置ContentProvider的权限 的相关文章

随机推荐