获取meta data的时候,正常的非纯数字的字符串,设置在value里面,用getString获取是正常的。android
可是若是含有纯数字的字符串,用getString获取返回为null。也许你会想到用getInt,getLong获取,很抱歉,也多是null。app
解决方式有两种:xml
一.资源
继续使用value="1234567890",可是在纯数字字符串开头加上"\ "(反斜杠+空格)这样系统会自动读取为字符串而不是其余格式,形如字符串
<meta-data android:name="appkey" android:value="\ 1234567890" />
二.使用resources属性经过getInt获取资源id,再获取资源id对应的值,这种方式可扩展性很强,能够获取全部资源而不仅是string,形如get
<meta-data android:name="appkey" android:resource="@string/AppKey" />
在strings.xml中定义AppKey的值为string
<string name="AppKey">1234567890</string>
三.Application下获取meta资源的方式io
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 ""; }