getKeysByPrefix 没有 return 默认值,只有远程值

getKeysByPrefix does not return defaults, only remote values

Firebase 远程配置有一个方法来 return 一组键。但它只有 returns 键存在于服务器端。 (我在 remoteconfig_defaults.xml 中定义的键没有。)

使用代码:

FirebaseRemoteConfig instance = FirebaseRemoteConfig.getInstance();
instance.setDefaults(R.xml.remoteconfig_defaults);
Set<String> keysSet = instance.getKeysByPrefix("");

和xml:

<defaultsMap xmlns:android="http://schemas.android.com/apk/res/android">
<entry>
    <key>loading_phrase</key>
    <value>Fetching config…</value>
</entry>
...
</defaultsMap>

关于如何获取默认键的任何想法?

由于默认值在 XML 中,因此可以使用 XML-解析器来获取密钥。

public static Set<String> getDefaultKeys(Context context, @XmlRes int xmlRes) {
    Set<String> keys = new HashSet<>();
    XmlResourceParser xmlResourceParser = context.getResources().getXml(xmlRes);
    try {
        boolean isInKeyTag = false;
        while (xmlResourceParser.getEventType() != XmlResourceParser.END_DOCUMENT) {
            if (xmlResourceParser.getEventType() == XmlResourceParser.START_TAG) {
                String tagName = xmlResourceParser.getName();
                if (tagName.equals("key")) {
                    isInKeyTag = true;
                }
            }
            if (xmlResourceParser.getEventType() == XmlResourceParser.END_TAG){
                String tagName = xmlResourceParser.getName();
                if (tagName.equals("key")){
                    isInKeyTag = false;
                }
            }
            if (xmlResourceParser.getEventType() == XmlResourceParser.TEXT){
                if (isInKeyTag){
                    String key = xmlResourceParser.getText();
                    keys.add(key);
                }
            }
            xmlResourceParser.next();
        }
        return keys;
    } catch (Exception e) {
        return null;
    }
}