获取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 ""; }