Android获取渠道名称

有时候因为业务需求,需要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计。那么就需要在和服务器交互之前,先获取应用软件的渠道标识,才能进一步完成后续地相关操作。

渠道名称图
1. 设置渠道号
<manifest ... >
  ...
  <application ... >    
    <meta-data
        android:name="UMENG_APPKEY"
        android:value="xxxxxxxxxxxxxxxx" />
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${ChannelName}" />     
     ...
  </application/>
</manifest>

2. 获取渠道名

① 使用友盟自己的API方法获取

public static String getChannelName(Context ctx){
    String channelName = AnalyticsConfig.getChannel(ctx);
    return channelName;
}

② 友盟统计 + Gradle配置多渠道打包的方式获取

1)Gradle多渠道配置
Android Studio多渠道打包、自定义APK打包名称

2)获取application中的meta-data数据

/**
  * 获取application中指定的meta-data
  * @return 如果没有获取成功(没有对应值,或者异常),则返回值为空
  */
public static String getAppMetaData(Context ctx, String key) {
    if (ctx == null || TextUtils.isEmpty(key)) {
        return null;
    }
    String resultData = null;
    try {
        PackageManager packageManager = ctx.getPackageManager();
        if (packageManager != null) {
            //注意此处为ApplicationInfo,因为友盟设置的meta-data是在application标签中
            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
            if (applicationInfo != null) {
                if (applicationInfo.metaData != null) {
                    //key要与manifest中的配置文件标识一致
                    resultData = applicationInfo.metaData.getString(key);
                }
            }
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return resultData;
}

★ 对比上述两种方法,方法一虽然简单,但是有一定的局限性;而方法二,先获取PackageMananger,再去获取 Application中的信息,进而获取 meta-data中的数据,这样我们不仅能拿到渠道标识,而且还可以获取其他信息做更多的事情。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 84,899评论 14 122
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 136,120评论 17 580
  • “认真”仿佛已经是一个奢侈的词语,生活节奏太快,我们都来不及认真。很久没有听到鸟儿的叫声,很久没有听到溪水的响声,...
    愫杺阅读 168评论 0 0
  • 六和敬(佛家用语) 小字:身和共住,口和无诤,意和同悦,戒和同修,见和同解,利和同均。
    刘伟书法_沈阳阅读 204评论 4 2
  • RIA 一个人的拆书帮。自己是学习者,也是拆书家。自己生成I,帮助自己做到A。 一群人的拆书帮。有一位拆书家,有一...
    知鱼君阅读 38评论 0 0