android - 为 android :authorities in a ContentProvider 使用@string

标签 android android-contentprovider

我的 list 中有一个 ContentProvider,当我使用硬编码字符串完全定义它们时,它可以工作。例如

<provider android:name="com.myprovider" android:authorities="com.myprovider"/>

工作完美,但是 ContentProviders 在一个被多个项目使用的库中,我不希望权限冲突,所以我尝试执行以下操作。

<provider android:name="com.myprovider" android:authorities="@string/myProviderAuthority">

这样我应该能够在单个 strings.xml 文件中定义我的所有权限,并且应用程序之间不会发生冲突,因为我应该能够使用每个应用程序资源覆盖系统来更改它们。

但是,当我尝试使用 @string 构建时,它似乎给了我一个格式错误的 list 错误,并说“提供者没有 INCUDE(是的,它说 INCUDE)当局致敬”

我可以不使用资源字符串来向当局致敬吗,每次我需要在两个位置保持常量时我都会感到恶心。我们的 QA 部门可能很难发现权限冲突,我不希望事情变得不同步,否则会导致困惑。有人知道为什么我的代码不起作用吗?

最佳答案

我遇到了类似的问题,但使用了 android:versionCode 属性。当我尝试在资源中定义版本代码并在 list 中使用对它的引用时,Android Market 甚至禁止我发布应用程序。事实证明,这种行为的原因相当简单。资源可能会根据当前配置而变化,并且此值在任何情况下都必须相同。

可能这就是为什么具有权限引用的内容提供者也不起作用的原因。在我看来,使用这样的引用并不是一个好主意,因为不能保证应用程序中的权限资源只有一个值。我知道您可以非常小心地保留此资源的单个实例,但没有对此进行特殊的编译器或系统检查,因此无法信任它。

关于android - 为 android :authorities in a ContentProvider 使用@string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461776/

相关文章:

java - 每次显示 Activity 时运行一个方法

android - 零星的 IllegalArgumentException : Unknown URL content://

Android:每个表的ContentProvider/处理一对多关系

android - Koin错误: org. koin.core.error.NoBeanDefFoundException。如何解决这个问题?

java - android中出现NullPointerException的原因是什么?

带有 ListView fragment 和自定义 ListView 适配器的 Android 下拉刷新

安卓分页 3 : It is possible to get the itemcount from PagingData<T>?

mysql - 使用 ContentProviderClient 从外部应用程序 rawQuery 一个 ContentProvider

android - 我需要带有游标加载器的内容提供程序吗?

android - 如何填充 ListAdapter