android 获取当前渠道,Android多渠道打包时获取当前渠道的方法
作為Android app,發(fā)布多個(gè)分發(fā)平臺(tái)是常規(guī)操作。然后,有時(shí)由于個(gè)渠道面對(duì)的用戶不同,或平臺(tái)審核標(biāo)準(zhǔn)不同,需要在各渠道使用不同的業(yè)務(wù)邏輯,這就需要根據(jù)渠道使用選擇差異化代碼。
這里把簡(jiǎn)單的代碼記一下。
首先,分渠道打包很簡(jiǎn)單。
在項(xiàng)目的build.gradle里設(shè)置
android {
...
productFlavors {
home_site {
dimension "money"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "home_site"]
}
main_store {
dimension "money"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "main_store"]
}
other_store {
dimension "money"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "other_store"]
}
}
}
其中的?dimension 是維度,通過(guò)?flavorDimensions 設(shè)置。
defaultConfig {
...
flavorDimensions "money"
}
設(shè)置維度主要是為了管理方便。
這個(gè)項(xiàng)目里總共設(shè)置了三個(gè)渠道
其中?UMENG_CHANNEL_VALUE 可以隨便命名,不過(guò)項(xiàng)目里的友盟統(tǒng)計(jì)會(huì)需要用到渠道名,所以這里就用UMENG的命名方法了。
接下來(lái)就是獲取當(dāng)前的渠道名,這樣就可以根據(jù)不同的渠道包設(shè)置不同的邏輯,比如設(shè)置某一模塊在某些平臺(tái)發(fā)布的版本隱藏,而再另一些平臺(tái)的版本上顯示。
首先,需要在?AndroidManifest.xml 文件定義信息變量。
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:name=".App"
android:roundIcon="@mipmap/logo"
android:theme="@style/AppTheme.NoActionBar">
...
android:name="CHANNEL_NAME"
android:value="${UMENG_CHANNEL_VALUE}" />
然后就可以在Application或Activity中獲取了。
ApplicationInfo applicationInfo = null;
try {
applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo == null) {
return;
}
String value = applicationInfo.metaData.getString("CHANNEL_NAME");
CommonConfig.CHANNEL_NAME=value;
//按渠道設(shè)置差異化代碼
System.out.println("CHANNEL_NAME:"+value);
switch (value){
case "home_site":
//邏輯1
break;
case "main_store":
//邏輯2
break;
case "other_store":
//邏輯3
break;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持IIS7站長(zhǎng)之家。
總結(jié)
以上是生活随笔為你收集整理的android 获取当前渠道,Android多渠道打包时获取当前渠道的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 0基础学RS(十一)VLAN知识点,VL
- 下一篇: android的多渠道打包,Androi