android 获取application和activity下meta-data中的值
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;
- }
- }
android 获取application和activity下meta-data中的值的更多相关文章
- python+webdriver,选取Select下拉框中的值
在选择下拉框中的值时遇到了困难,用driver.find_element_by_id("").send_keys("")进行赋值不能成功获取下拉框中的值. ...
- 朝花夕拾-android 自定义application 管理activity的生命周期
为了安全退出多个已创建的activity? 可以自定义application:myapplication. 增加一个list成员保存,一些关键的已创建的activity实例: private List ...
- android获取在res文件下的图片资源
//得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录,getPackageName()是应用程序的包) int resID = getResou ...
- [Android] adb 命令 dumpsys activity , 用来看 task 中的activity。 (uninstall virus)
用“adb shell dumpsys activity”命令再来查看一下系统运行的的任务,就会看到: ACTIVITY MANAGER ACTIVITIES (dumpsys activity ac ...
- js获取select下拉框中的值
现在有一id为userType的下拉框,怎么获取选中的值: 用户类型: <select name="type" id="userType"> < ...
- vue手写的轮播图片,解决已经修改data中的值,页面标签已绑定,但页面没效果
1.效果 2.index.html <!DOCTYPE html> <html lang="en"> <link> <meta chars ...
- robotframework 随机选中下拉框中的值
示例脚本: click element id=provinceName #点击地区 省 wait until element is enabled xpath=.//*[@id='provinceNa ...
- selenium python选取下拉框中的值
https://stackoverflow.com/questions/47689936/unable-to-scroll-and-select-desired-year-from-calender- ...
- MySQL下concat函数中null值问题
在mysql中,使用CONCAT(str1,str2,...)函数拼接字符串的过程中,如果你拼接的字段当中有值为null,那么拼接的结果就为null 注: select CONCAT(字段1,字段2) ...
随机推荐
- Tool:XMind
ylbtech-Tool:XMind XMind 是一款非常实用的商业思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用.高效的可视化思维软件,强调软件的可扩展.跨平台.稳定 ...
- HDU3092:Least common multiple(素数筛选+完全背包)
题意 给出\(n\)和\(m\),将\(n\)拆成任意个数,求它们的最大的\(lcm\) 分析 1.可以证明\(n=p1^{s1}*p2^{s2}*...*pn^{sn}\)时\(lcm\)最大(其中 ...
- markdown(语法)入门学习:
原文链接:https://segmentfault.com/a/1190000010223222#articleHeader9 1.标题 注:#后面保持空格 # h1 ## h2 ### h3 ### ...
- Linux 常用命令六 cp和mv
一.cp命令 Linux中的复制命令. 复制文件: wang@wang:~/workpalce/python$ tree . ├── .txt ├── dir └── module directori ...
- caj转pdf——包含下载链接
很多人在知网上下载论文后,想转换成PDF格式,本片一站式教学,包含下载链接. 需要工具 1 caj格式的文件,即要转换的文件. 2 cajviewer,可以在知网的官网上面下载,下载地址参考这里. 3 ...
- 【插件开发】—— 5 SWT控件以及布局使用
前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 经过前几篇的介绍,多少对SWT又有了一些认识,那么这篇继续来看一下一些控件的组合使用 ...
- 简单水题 POJ 2291 Rotten Ropes
题目传送门 /* 我校oj的源题,看懂题意就很水,贴出来省的再敲:) */ #include <cstdio> #include <algorithm> #include &l ...
- Android 线程池系列教程(3) 创建线程池
Creating a Manager for Multiple Threads 上一课 下一课 1.This lesson teaches you to Define the Thread Pool ...
- 452 Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球
在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐标总是小于结束坐标.平面 ...
- D. Leaving Auction 一题很好的思维题
http://codeforces.com/contest/749/problem/D 现在发现做题要把样例抄下来,然后画一画,这样才容易发现新大陆.嗯,以后做题就这样. 如果排除了被删除了的人,那么 ...