【热】如何动态设置渠道信息?⭐️
问题描述:
我使用360加固助手进行多渠道打包,根据360加固助手的要求,删除了AndroidManifest.xml清单中的如下渠道配置:
<meta-dataandroid:name="UMENG_CHANNEL"android:value="Umeng"></meta-data>打包解压后的apk,发现apk中AndroidManifest.xml文件中也确实存在360加固助手写入的正确渠道值。但是安装apk运行之,从sdk 调试log中看到的渠道还是不对。该怎么办?
在app的Application.onCreate函数中添加如下代码,通过getChannelName函数从AndroidManifest.xml中读取渠道值,使用获取到的渠道值初始化SDK,,调用UMConfigure.init函数,将渠道值作为初始化init函数的第三个参数传入。
// 获取渠道工具函数public static String getChannelName(Context ctx) { if (ctx == null) { return null; } String channelName = null; try { PackageManager packageManager = ctx.getPackageManager(); if (packageManager != null) { //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是activity标签中,所以用ApplicationInfo ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA); if (applicationInfo != null) { if (applicationInfo.metaData != null) { channelName = applicationInfo.metaData.get("UMENG_CHANNEL")+""; } } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if (TextUtils.isEmpty(channelName)){ channelName="Unknown"; } return channelName;}