您的位置:首页 > 文旅 > 美景 > 网页版梦幻西游金卡竞猜_家装公司运营模式_互联网销售是什么意思_网页seo

网页版梦幻西游金卡竞猜_家装公司运营模式_互联网销售是什么意思_网页seo

2025/5/14 15:46:31 来源:https://blog.csdn.net/yuyueliuliu/article/details/147322323  浏览:    关键词:网页版梦幻西游金卡竞猜_家装公司运营模式_互联网销售是什么意思_网页seo
网页版梦幻西游金卡竞猜_家装公司运营模式_互联网销售是什么意思_网页seo

现象描述

最近在项目中接入穿山甲广告的sdk,快速实现了核心功能验证。接下来就准备规范代码正式使用,却掉了一个坑,略做记录。

穿山甲sdk提供了一个appid的参数,不同渠道包是不同的,所以将其配入了gradle的productFlavors部分,即如下所示中的TT_APPID:

productFlavors {version_vivo {dimension "default"applicationIdSuffix ".vivo"manifestPlaceholders = [CHANEL_ID: "vivo1000",//穿山甲广告TT_APPID    : "5657678"]}
}

再在AndroidManifest.xml中配置meta数据:

<meta-dataandroid:name="CHANEL_ID"android:value="${CHANEL_ID}" /><meta-dataandroid:name="TT_APPID"android:value="${TT_APPID}" />

初始化穿山甲sdk的时候获取meta数据:

ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
AppUtil.CHANEL_ID = appInfo.metaData.getString("CHANEL_ID");
AppUtil.TT_APPID = appInfo.metaData.getString("TT_APPID");

这一系列步骤看起来完美无缺,但偏偏当信心满满run起来的时候,发现获取不到TT_APPID。

检查了下代码,发现CHANEL_ID都能获取到,偏偏获取不到TT_APPID,这不科学啊!

气死我也,本来如行云流水的敲代码过程就被中断了。

深呼吸,一顿各种检查,各种log查看,谷歌加百度支援,终于解决了问题。

问题分析

Android在处理meta-data的时候如果value可以转化为数值类型,那么它将自动被转换为数值类型。在代码中通过getString是无法获取到这个值的。而本案例中的CHANEL之所以可以获取到,因为不可转化为数值类型,而TT_APPID是可以转化为数值类型的

解决方法

  • 将value改用非数值类型
  • 也可以将数值类型转换为带0X的16进制表示
  • 或者使用getInt方法取值

我选用的是第3个解决方法

ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); 
AppUtil.CHANEL_ID =appInfo.metaData.getString("CHANEL_ID"); 
AppUtil.TT_APPID = "" + appInfo.metaData.getInt("TT_APPID");

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com