获取meta data的时候,正常的非纯数字的字符串,设置在value里面,用getString获取是正常的。
但是如果含有纯数字的字符串,用getString获取返回为null。也许你会想到用getInt,getLong获取,很抱歉,也可能是null。
解决方式有两种:
一.
继续使用value="1234567890",但是在纯数字字符串开头加上"\ "(反斜杠+空格)这样系统会自动读取为字符串而不是其他格式,形如
<meta-data
android:name="appkey"
android:value="\ 1234567890" />
二.使用resources属性通过getInt获取资源id,再获取资源id对应的值,这种方式可扩展性很强,可以获取所有资源而不只是string,形如
<meta-data
android:name="appkey"
android:resource="@string/AppKey" />
在strings.xml中定义AppKey的值为
<string name="AppKey">1234567890</string>
三.Application下获取meta资源的方式
public static String getStringMetaData(String name) {
int valueId = 0;
try {
ApplicationInfo appInfo = getApplicationContext().getPackageManager()
.getApplicationInfo(getApplicationContext().getPackageName(),
PackageManager.GET_META_DATA);
valueId = appInfo.metaData.getInt(name);
if (valueId != 0) {
return getApplicationContext().getResources().getString(valueId);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
}





