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多渠道打包时获取当前渠道的方法相关推荐
- android 渠道方案,Android多渠道打包时获取当前渠道的方法
作为Androidapp,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记一 ...
- android 渠道索取,Android多渠道打包时获取当前渠道的方法
作为android app,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记 ...
- android 渠道索取,Android多渠道打包时获取当前渠道
作为Android app,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记 ...
- Android使用360加固宝多渠道打包
Android使用360加固宝多渠道打包关键点: 1.设置多渠道打包模板 格式根据软件导出的版本自行设置,模板类似下面示例: UMENG_CHANNEL 华为 huawei UMENG_CHANNEL ...
- android 分享元素,Android开发之5.0activity跳转时共享元素的使用方法
在两个activity中的xml文件中编写下面的ImageView,主要的就是transitionName属性必须使用相同的属性. android:id="@+id/item_image&q ...
- Android Studio 3.0 下 Cordova 打包时 Gradle 兼容性问题解决
为什么80%的码农都做不了架构师?>>> 升级到 Android Studio 3.0, Gradle 升级为 4.3.1 版本,使用 cordova build androi ...
- android获取wifi别名,android-连接WIFI时获取SSID
android-连接WIFI时获取SSID 当我的android设备连接到WIFI时,我试图获取WIFI网络的SSID. 我已经注册了一个BroadcastReceiver,用于监听wifiInfo. ...
- IDEA第一次创建android太慢,idea新建maven项目时速度缓慢的解决方法
原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令的 ...
- Unity - But the dll is not allowed to be included or could not be found 打包时错误提示的解决方法
当第一次打包时碰到这个,问题,还真是挺烦的,但这却又是谁都会碰到的问题 这个链接,我真是第一次看到高赞,但不是真实的答案的 dll is not allowed to be included or c ...
最新文章
- AndroidStudio更换黑色主题方法
- pytorch 语义分割loss_Recall Loss:用于不平衡图像分类和语义分割的召回损失
- QDir, QFileInfo 和 QDirIterator 区别
- logstash使用中遇到的问题
- 1044 火星数字 PAT乙级 (C++)
- Oracle自动性能统计
- glibc free 死锁
- 学计算机河北科技华北理工,河北117所正规高校都在这儿!别被”野鸡大学“忽悠了!...
- springboot 常用插件
- 让我们了解下什么是智能客服(问答)
- VirtualBox - 虚拟机下主机与虚拟机、虚拟机与虚拟机之间通信配置
- ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting
- 需要做CQC认证的产品栏目列表
- 2019年五一赛赛后总结
- 基于C# winform的操作系统课程设计:SPOOLING假脱机输入输出技术模拟
- python visual studio jetbrain_jetbrain系列IDE设置
- 余压监控系统在高层住宅楼的应用
- 蚂蚁金服副 CTO胡喜:从 BASIC 到 basic ,蚂蚁金服十五年技术架构演进之路
- swift实战-豆瓣电台
- 使用KlipC避开平台扫止损,控制止盈和延迟订单成交