如何在多个模块之间共享String?

时间:2016-02-05 14:02:21

标签: android android-gradle user-agent

我有3个模块:mod1mod2mod3。模块mod1具有依赖关系mod2mod3

我希望在这3个模块之间共享一个String(特别是它将是UserAgent,因为所有3个模块都与某个服务器进行HTTP通信,所有3个模块应该具有相同的用户代理集)。

3 个答案:

答案 0 :(得分:1)

这样做的一种方法是使用方法来创建一个公共类来写入和读取信息。

    public static String readnote(Context context, String str) {
    if (context == null) throw new RuntimeException ("Context is null");
    SharedPreferences sp = context.getSharedPreferences("somenameyouchoose", 0);
    String mycontent = sp.getString(str);
    return mycontent;
}

public static String writenote(Context context, String str) {
    if (context == null) throw new RuntimeException ("Context is null");
    SharedPreferences sp = context.getSharedPreferences("somenameyouchoose", 0);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString(str);
    editor.commit();
    return str;
}

然后你可以写一个(这个,“myUserAgent”)和readnote(这个,“myUserAgent”)。

如果你使用intent,另一个方法是使用intent.putExtra。

答案 1 :(得分:0)

如果这是"一个字符串"你想让所有其他模块共用,在strings.xml文件中(String文件中不是.java值),那么你可以创建一个公共模块,{{1包含您想要为其中的mode0文件中的其他模块使用的String值。然后,您可以将strings.xml添加为其他模块的依赖项。这可能不是最好的方法,但希望这将是有用的!

答案 2 :(得分:0)

将构建配置字段添加到顶级构建文件的子项目条目中。

会是这样的:

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            android.defaultConfig {
                buildConfigField 'String', 'USER_AGENT', "\"Android-agent\""
            }
        }
    }
}   

然后在每个模块的BuildConfig个文件中,您将看到:

public static final String USER_AGENT = "Android-agent";

P.S。也许它不是android子项目检测的最佳实现,但是我知道的最好的