android mainfest 中metadata得到數值為null解決方法
遊戲開發經常要在AndroidManifest.xml中定義一些支付的渠道號
<meta-data
android:name="channel"
android:value="1234" />
但是在程式中讀取的時候發現死活得不到這個值,一直是為null
然後發現在數字後面隨便加一個字母之後就可以得到了
<meta-data
android:name="channel"
android:value="1234w" />
後來才發現讀取字串的數值要用info.metaData.getInt
<meta-data
android:name="channel"
android:value="1234" />
ActivityInfo
info =
this
.getPackageManager()
.getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
info.metaData.getInt(
"channel"
);
其他相關知識
概念
meta-data就像其名一樣,主要用來定義一些元件相關的配置值。
按照官方定義,metadata是一組供父元件使用的名值對(name-value pair),因此相應的meta-data元素應該定義在相應的元件中。即如果想在activity中使用metadata,那麼meta-data必須定義在AndroidManifest.xml的activity宣告中。
使用
所有的名值對被包裝成Bundle供元件使用,因此使用方式同Bundle。metadata普通值由value屬性給出,資源ID由resource屬性給出。
比如我們定義資源
1 2 3 |
< string name = "x_key" >resource
key</ string >
//R
public
static final int ic_launcher=0x7f020000;
|
1 2 3 4 5 6 7 8 9 |
< meta-data
android:name = "com.xesam.key_1"
android:value = "x_key" />
< meta-data
android:name = "com.xesam.key_2"
android:value = "@string/x_key" />
< meta-data
android:name = "com.xesam.img"
android:resource = "@drawable/ic_launcher" />
|
那麼有:
?1 2 3 |
|