android 获取当前渠道,Android多渠道打包时获取当前渠道的方法
作為Android app,發布多個分發平臺是常規操作。然后,有時由于個渠道面對的用戶不同,或平臺審核標準不同,需要在各渠道使用不同的業務邏輯,這就需要根據渠道使用選擇差異化代碼。
這里把簡單的代碼記一下。
首先,分渠道打包很簡單。
在項目的build.gradle里設置
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 是維度,通過?flavorDimensions 設置。
defaultConfig {
...
flavorDimensions "money"
}
設置維度主要是為了管理方便。
這個項目里總共設置了三個渠道
其中?UMENG_CHANNEL_VALUE 可以隨便命名,不過項目里的友盟統計會需要用到渠道名,所以這里就用UMENG的命名方法了。
接下來就是獲取當前的渠道名,這樣就可以根據不同的渠道包設置不同的邏輯,比如設置某一模塊在某些平臺發布的版本隱藏,而再另一些平臺的版本上顯示。
首先,需要在?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;
//按渠道設置差異化代碼
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();
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持IIS7站長之家。
總結
以上是生活随笔為你收集整理的android 获取当前渠道,Android多渠道打包时获取当前渠道的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 0基础学RS(十一)VLAN知识点,VL
- 下一篇: 中关村创业大街是贵重金属垃圾场,我捡到一