我的 list 有此问题。
看起来这可能是一个骗局: Using @string for android:authorities in a ContentProvider
我有一个针对不同版本的应用程序具有单独权限的提供程序(以便不同的变体可以将这些权限存储在差异目标资源文件夹的字符串文件夹中。
我的 list 如下所示:
<provider android:authorities="@string/app_provider_auth" android:name="com.mecompany.myapp.provider.CachedFileProvider"/>
现在,这工作正常,但是当它安装在 2.1 操作系统设备上时,我看到了 Bad Manifest
问题。这是问题所在,因为当我将其更改为文本字符串时,它在 2.1 上工作正常。
我认为在 2.1 (7) 或更早版本中, list 不允许您引用资源文件中的字符串。那么,我可以为版本 7 创建一个单独的 list 吗? list 中可以有 if 语句吗?或者我必须提高minSDK(最后的手段)?
更新:
好吧,进一步搜索似乎我可以使用我的 Maven 构建来设置/切换提供者身份验证字符串。我已经有许多配置文件并且正在覆盖资源文件夹。所以我对这个想法很满意,但这就是我无法理解的原因。 类似的东西
<replaceAuthority>${customerauthority}<replaceAuthority>
但是我不知道我应该使用什么标签,或者我上面假设的方式是否是我需要走的方式。
最佳答案
要从 Maven 更改提供程序,您可以使用 <providerAuthorities>
标签如下:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.5.0</version>
<extensions>true</extensions>
<configuration>
<!-- Установка версии в манифест -->
<manifest>
<versionName>${project.version.name}</versionName>
<versionCode>${project.version.code}</versionCode>
<!-- провайдер -->
<providerAuthorities>
<property>
<name>.database.DatabaseProvider</name>
<value>${project.package}.database.DatabaseProvider</value>
</property>
</providerAuthorities>
</manifest>
</configuration>
</plugin>
关于带有 @String 引用的 Android list - 特别是 android :authorities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070046/