如何在多个模块之间共享字符串?

如何在多个模块之间共享字符串?

问题描述:

我有3个模块:mod1mod2mod3。模块mod1具有依赖性mod2mod3如何在多个模块之间共享字符串?

我想有一个字符串(特别是它将被USERAGENT因为所有3个模块HTTP对话的一些服务器和所有3应具有相同的用户代理组)的那些3个模块间共享。

+0

是mod1,mod2和mod3 gradle模块还是同一个app的隔离部分? –

+0

“gradle modules”是指库的依赖关系(取自maven回购)?不,他们是模块的依赖关系(可能是你称之为“同一个应用程序的隔离部分”) –

+1

第一次看到我的ming是创建一个库模块,并具有'mod1','mod2'和'mod3'依赖于它。考虑到你只想分享一个字符串,这可能是矫枉过正的。 –

如果这个“一个字符串”你想使通用于所有其它模块,是一个strings.xml文件(不是在.java文件String值),那么你可以创建一个通用模块说,mode0,包括你的String你想为其他模块在strings.xml文件中通用的值。然后,您可以将mode0作为依赖项添加到其他模块。这可能不是这样做的最好方法,但是,希望这会有用!要做到这一点

一种方法是让一个有方法的公共类写入和读取信息。

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”),并读取注(这一点, “myUserAgent”)。

如果您使用的意图,另外的形式给出了就是用intent.putExtra。

+0

@Marian请检查正确的答案,你认为这对帮助你解决问题更有帮助。谢谢。 – statosdotcom

添加构建配置领域的顶级构建文件的您子项目进入。

这将是这样的:

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

然后在你的每一个模块的BuildConfig文件,你会看到:

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

附:也许这不是最好的安卓子项目检测实施,但我知道的最好的一个