如何修改代码获取AndroidManifest中activity内的meta-data字段?
获取AndroidManifest中Activity节点下的meta-data字段
要获取Activity节点下<meta-data>中的值,你需要通过JActivityInfo读取,而非原代码里的JPackageInfo,具体修改后的代码如下:
function GetActivityMetaData(const AMetaDataName: string): string; var PackageManager: JPackageManager; ComponentName: JComponentName; ActivityInfo: JActivityInfo; Begin Result := ''; // 获取包管理器实例 PackageManager := SharedActivity.getPackageManager; // 获取当前Activity的组件标识 ComponentName := SharedActivity.getComponentName; // 读取包含meta-data的Activity信息 ActivityInfo := PackageManager.getActivityInfo(ComponentName, TJPackageManager.JavaClass.GET_META_DATA); if Assigned(ActivityInfo.metaData) then begin if ActivityInfo.metaData.containsKey(TJString.JavaClass.valueOf(AMetaDataName)) then begin Result := JStringToString(ActivityInfo.metaData.getString(TJString.JavaClass.valueOf(AMetaDataName))); end; end; End; // 调用示例:获取productName的值 var ProductName: string; begin ProductName := GetActivityMetaData('productName'); end;
关键说明
- 通过
SharedActivity.getComponentName()定位目标Activity节点,确保读取的是当前Activity下的meta-data - 使用
GET_META_DATA标记告知包管理器需要读取meta-data内容 - 增加空值判断,避免因meta-data不存在或键名错误导致的异常
内容的提问来源于stack exchange,提问作者NicoBlu
相关产品推荐
相关产品推荐

