1. 程式人生 > >從AndroidManifest.xml檔案中獲取 android:value 值的Integer與String轉換異常

從AndroidManifest.xml檔案中獲取 android:value 值的Integer與String轉換異常

最近接入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;  
    }