最近接入Android的渠道商SDK时,在AndroidManifest.xml中添加了一些渠道参数,发现当填入的值恰好为一个int值,使用getString()方法取值就会报一个类型转换异常。
配置如下:
<meta-data android:name="zdqx_version" android:value="1101" />
调用方法:
appInfo.metaData.getString(keyMeta)
异常:
Bundle : Key zdqx_version expected String but value was a java.lang.Integer. The default value <null> was returned.
解决办法:
//获取metadata
public static String getSystemMeta(String keyMeta) {
String valueMeta = "";
try {
ApplicationInfo appInfo = AppActivity.mAct.getPackageManager()
.getApplicationInfo(AppActivity.mAct.getPackageName(),
PackageManager.GET_META_DATA);
Object object = appInfo.metaData.get(keyMeta);
if (null != object) {
valueMeta = String.valueOf(object);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.d(AppConst.TAG, "getSystemMeta info: " + keyMeta + " " + valueMeta);
return valueMeta;
}