当前位置: 首页 > news >正文

获取不到AndroidManifest中的meta-data

现象描述

最近在项目中接入穿山甲广告的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");
http://www.xdnf.cn/news/11665.html

相关文章:

  • AI Agents系列之构建多智能体系统
  • 《奇迹世界起源》:神之月晓活动介绍!
  • 不确定与非单调推理的概率方法
  • 安全光幕的CE认证
  • 项目计划管理系统怎么选?15款项目管理工具详评
  • Flutter与FastAPI的OSS系统实现
  • 【系统架构设计师】统一过程模型(RUP)
  • 什么是爬虫?——从技术原理到现实应用的全面解析
  • Scrapeless Scraping Browser: A high-concurrency automation solution for AI
  • 高翔《视觉SLAM十四讲》第7章对极几何相关内容,对极约束分析讲解
  • 文章记单词 | 第38篇(六级)
  • fetch使用put请求提交文件,postman使用put请求提交文件
  • 将DeepSeek-R1蒸馏为轻量级模型实战
  • 《AI赋能职场:大模型高效应用课》第8课 AI辅助职场沟通与协作
  • 【专题刷题】双指针(四):最接近的三数之和,接雨水
  • C#中扩展方法和钩子机制使用
  • ARINC818协议的帧格式
  • 如何构建跨平台可复用的业务逻辑层(Web、App、小程序)
  • Elasticsearch倒排索引与传统索引对比
  • iOS 冷启动时间监控:启动起点有哪些选择?
  • OpenBMC:BmcWeb log输出
  • 消息中间件——RocketMQ(二)
  • git push
  • MySQL快速入门篇---库的操作
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析
  • 深入规划 Elasticsearch 索引:策略与实践
  • RFID图书管理系统如何重构数字化仓储管理新生态
  • 【硬件系统架构】冯·诺依曼架构
  • VOIP通信中的错误码
  • 深度学习| Deep Snake环境配置+训练+预测评估(超全面)