讀取AndroidManifest.xml中的meta-data
阿新 • • 發佈:2018-12-25
AndroidManifest.xml中定義了meta-data,例如常見的渠道名:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="zhangphil.book"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> ...... <meta-data android:name="APP_CHANNEL" android:value="zhangphil" /> </application> </manifest>
上層Java程式碼讀取:
ApplicationInfo appInfo; try { appInfo = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA); Bundle bundle = appInfo.metaData; String app_channel = bundle.getString("APP_CHANNEL", null); Toast.makeText(getApplicationContext(), app_channel, Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); }
需要注意的是,如果meta-data不是定義在application裡面,而是在activity或者service等Android元件裡面,程式碼實現會有不同。如果meta-data定義在service裡面,那麼上層Java程式碼讀取的方式為:
ComponentName cn = new ComponentName(this, XXXService.class); ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA); String xxx_value = info.metaData.getString("xxx_key");
若是activity,則形式類似,用到的關鍵元件是activity的。如果是廣播broadcast,則是廣播的。