作为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多渠道打包时获取当前渠道的方法相关推荐

  1. android 渠道方案,Android多渠道打包时获取当前渠道的方法

    作为Androidapp,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记一 ...

  2. android 渠道索取,Android多渠道打包时获取当前渠道的方法

    作为android app,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记 ...

  3. android 渠道索取,Android多渠道打包时获取当前渠道

    作为Android app,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记 ...

  4. Android使用360加固宝多渠道打包

    Android使用360加固宝多渠道打包关键点: 1.设置多渠道打包模板 格式根据软件导出的版本自行设置,模板类似下面示例: UMENG_CHANNEL 华为 huawei UMENG_CHANNEL ...

  5. android 分享元素,Android开发之5.0activity跳转时共享元素的使用方法

    在两个activity中的xml文件中编写下面的ImageView,主要的就是transitionName属性必须使用相同的属性. android:id="@+id/item_image&q ...

  6. Android Studio 3.0 下 Cordova 打包时 Gradle 兼容性问题解决

    为什么80%的码农都做不了架构师?>>>    升级到 Android Studio 3.0, Gradle 升级为 4.3.1 版本,使用 cordova build androi ...

  7. android获取wifi别名,android-连接WIFI时获取SSID

    android-连接WIFI时获取SSID 当我的android设备连接到WIFI时,我试图获取WIFI网络的SSID. 我已经注册了一个BroadcastReceiver,用于监听wifiInfo. ...

  8. IDEA第一次创建android太慢,idea新建maven项目时速度缓慢的解决方法

    原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令的 ...

  9. Unity - But the dll is not allowed to be included or could not be found 打包时错误提示的解决方法

    当第一次打包时碰到这个,问题,还真是挺烦的,但这却又是谁都会碰到的问题 这个链接,我真是第一次看到高赞,但不是真实的答案的 dll is not allowed to be included or c ...

最新文章

  1. AndroidStudio更换黑色主题方法
  2. pytorch 语义分割loss_Recall Loss:用于不平衡图像分类和语义分割的召回损失
  3. QDir, QFileInfo 和 QDirIterator 区别
  4. logstash使用中遇到的问题
  5. 1044 火星数字 PAT乙级 (C++)
  6. Oracle自动性能统计
  7. glibc free 死锁
  8. 学计算机河北科技华北理工,河北117所正规高校都在这儿!别被”野鸡大学“忽悠了!...
  9. springboot 常用插件
  10. 让我们了解下什么是智能客服(问答)
  11. VirtualBox - 虚拟机下主机与虚拟机、虚拟机与虚拟机之间通信配置
  12. ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting
  13. 需要做CQC认证的产品栏目列表
  14. 2019年五一赛赛后总结
  15. 基于C# winform的操作系统课程设计:SPOOLING假脱机输入输出技术模拟
  16. python visual studio jetbrain_jetbrain系列IDE设置
  17. 余压监控系统在高层住宅楼的应用
  18. 蚂蚁金服副 CTO胡喜:从 BASIC 到 basic ,蚂蚁金服十五年技术架构演进之路
  19. swift实战-豆瓣电台
  20. 使用KlipC避开平台扫止损,控制止盈和延迟订单成交

热门文章

  1. [windows] 半开连接数
  2. linux命令--mkdir 与文件权限
  3. 数据分析之np.random.choice()补充【从二维数组随机选择n行一维数组】
  4. LWN: kernel中GCC plugin的未来命运!
  5. vueweb端响应式布局_移动端和pc端,响应式设计布局
  6. 读IDEO 设计改变一切的思考
  7. 基于java失物招领系统
  8. STM32、GD32、ESP32 的区别
  9. 关于飞鱼U3D主程/高级的招聘
  10. 基于jsp(java)高校学生考勤管理系统设计与实现