也许标题有点误导。我的问题是我有一个 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(使用前将#替换为@)