带有 @String 引用的 Android list - 特别是 android :authorities

标签 android string resources manifest

我的 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/

相关文章:

android - 如何从子 Activity 中获取结果

android - 如何通过此 Activity 修复此错误 : You need to use a Theme. AppCompat 主题(或后代)

android - 使用 setText(R.string.value) 和 setText(getResources().getString(R.string.value) 设置文本的优点/缺点

Android - ResourcesNotFoundException 试图通过资源 id 设置操作栏图标时

grails - Grails将动态javascript(gsp的输出)作为资源处理

java - java中如何从Map中读取Arraylist的值

android - 如何使用平台权限将预构建的 APK 包含到 AOSP 中

javascript 字符串解释为对象

c++ - 以下 Variadic 模板行为是否不一致?

java - 在 Java 中使用资源文件