android 获取application和activity下meta-data中的值
2024-08-30 02:24:14
meta-data在AndroidManifest中是以键值对的形式存在的,可以将meta-data放在application根节点下,也可以放在某个activity节点下。因为存放的位置不同,因此获取value时也要使用对应的方法,下面是我写的一个小测试。
代码如下:
先是在AndroidManifest中的application和mainActivity下添加两个meta-data属性。
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <meta-data
- android:name="com.lzy.test"
- android:value="测试" />
- <activity
- android:name=".MainActivity"
- android:label="@string/app_name" >
- <meta-data
- android:name="com.example.metatest.MainActivity.com.lzy.activity.test"
- android:value="Activity测试" />
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
接下来在mainActivity中来获取这两个属性的值。
- package com.example.metatest;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.pm.ActivityInfo;
- import android.content.pm.ApplicationInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.Toast;
- /**
- * meta 测试
- *
- * @author Administrator
- *
- */
- public class MainActivity extends Activity {
- public static final String TEST = "com.lzy.test";
- public static final String ACTIVITYTEST = MainActivity.class.getName()+".com.lzy.activity.test";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- String test = getMetaDataStringApplication(TEST, null);
- String activityTest = getMetaDataStringFromActivity(ACTIVITYTEST, null);
- Toast.makeText(this, test+"--"+activityTest, Toast.LENGTH_LONG).show();
- }
- /**
- * 根据key从Application中返回的Bundle中获取value
- *
- * @param key
- * @param defValue
- * @return
- */
- private String getMetaDataStringApplication(String key, String defValue) {
- Bundle bundle = getAppMetaDataBundle(getPackageManager(), getPackageName());
- if (bundle != null && bundle.containsKey(key)) {
- return bundle.getString(key);
- }
- return defValue;
- }
- /**
- * 获取Application中的meta-data.
- *
- * @param packageManager
- * @param packageName
- * @return
- */
- private Bundle getAppMetaDataBundle(PackageManager packageManager,
- String packageName) {
- Bundle bundle = null;
- try {
- ApplicationInfo ai = packageManager.getApplicationInfo(packageName,
- PackageManager.GET_META_DATA);
- bundle = ai.metaData;
- } catch (NameNotFoundException e) {
- Log.e("getMetaDataBundle", e.getMessage(), e);
- }
- return bundle;
- }
- /**
- * 根据key从Activity中返回的Bundle中获取value
- *
- * @param key
- * @param defValue
- * @return
- */
- private String getMetaDataStringFromActivity(String key, String defValue) {
- Bundle bundle = getActivityMetaDataBundle(getPackageManager(), getComponentName());
- if (bundle != null && bundle.containsKey(key)) {
- return bundle.getString(key);
- }
- return defValue;
- }
- /**
- * 获取Activity中的meta-data.
- *
- * @param packageManager
- * @param component
- * @return
- */
- private Bundle getActivityMetaDataBundle(PackageManager packageManager, ComponentName component) {
- Bundle bundle = null;
- try {
- ActivityInfo ai = packageManager.getActivityInfo(component,
- PackageManager.GET_META_DATA);
- bundle = ai.metaData;
- } catch (NameNotFoundException e) {
- Log.e("getMetaDataBundle", e.getMessage(), e);
- }
- return bundle;
- }
- }
最新文章
- nRF24L01芯片控制——迈向无线的第一步
- Ubuntu16.04 apache2 wsgi 部署django
- T-SQL的回车和换行符(SQL)
- 在jsp页面解析json的2种方法
- nginx性能配置参数说明:
- 提供进销存、ERP系统快速开发框架源码 (C#+SQL)
- jquery选择器专题
- Spark Yarn-cluster与Yarn-client
- 观未见,行不止 &mdash;&mdash; Power BI 两周年技术和方案交流圆桌会议纪实
- 聊聊 Scala 的伴生对象及其意义
- Nuget私有服务搭建实战
- 【朝花夕拾】Android性能篇之(五)Android虚拟机
- py-day3-6 python map函数
- 【Teradata】grouping和rollup窗口函数
- 统计各个数据库的各个数据表的总数,然后写入到excel中
- 20172327 2018-2019-1 《第一行代码Android》第一章学习总结
- Docker(一)Linux开启你的Docker之旅
- 在eclipse上搭建Roku开发环境
- How To Setup Apache Hadoop On CentOS
- FCCMBBTN.RES
热门文章
- 视音频编解码基本术语及解释&;MediaInfo
- appium的get_attribute方法
- jenkins配置发送邮件时,日志中显示发送成功,但是邮箱没有收到邮件
- EF通过反射追踪修改记录.适合记录变更系统
- Silverlight 后台利用代码触发 Button 的Click事件
- centos 6.2 pptp 客户端 安装(转载)
- 0 Java实现 一篇文章说尽设计模式之六大原则
- bzoj 4916: 神犇和蒟蒻【欧拉函数+莫比乌斯函数+杜教筛】
- ACM复习专项
- Linux环境下Apache反向代理金蝶中间件Apusic集群