五二脚本 手机端 m.52jb.net
特色栏目:PHP教程JavaScript正则表达式焦点幻灯片
页面导航:首页 > 手机教程 > Android > 正文内容

android 获取Manifest中标签的值

来源:52脚本网发布时间:04-17浏览:826 次
这篇文档主要介绍了android 获取Manifest中标签的值,需要的朋友参考一下

在平时我们开发应用的过程中,我们可能需要设置一些动态变量值随着我们版本的变化一起变化 。在这种情况下,一般我们首先想到的办法可能就是我们申明一个静态的变量,然后在我们的应用中直接使用就行了,以后如果需要修改的时候,我们再找到这个类 里面的定义的地方,再重新赋值即可

当然,我们也可以通过在Menifest里面的meta-data标签来定义一个值,然后在我们的应用中直接去读取即可,这样,下次如果需要修改值,我们就不必再找到我们的代码了,而是在修改我们的版本号的时候,一起就可以修改了。更加方便与便捷。

这样的应用场景在给多市场打包的时候,你一定见过。比如友盟,有米的sdk里面就有一步为:在 application标签下定义一个meta-data来为不同的市场赋值和传入不同的appId

那么我们的自己应用里面应该如何去定义meta-data的值呢?并且怎么在代码中取出我们要想的值 呢?

那么点击更多,跟着我一起来看看如何操作吧!!!

 

 代码如下 复制代码
<application ...>
<meta-data android:value="12345" android:name="APPID"/>
<activity ...>
<meta-data android:name="data_Name" android:value="hello my activity"></meta-data>
</activity>
</application>
 

从上面可以看出,我们的meta-data不仅仅是可以放到application标签下面,也可以放到activity下面,其实也可以放到service ,receiver下面。。。

我们分别来看看如何获取的吧?

1.获取 application标签中的meta-data:
形如:

 

 代码如下 复制代码

<application...>
<meta-data android:value="my_data" android:name="data_Name"/>
</application>
代码:

ApplicationInfo appInfo = context.getPackageManager()
.getApplicationInfo(context.getPackageName(),
PackageManager.GET_META_DATA);
String dataName=appInfo.metaData.getString("data_Name");

2.获取 activity标签中的meta-data:
形如:

 代码如下 复制代码

<activity ...>
<meta-data android:value="my_activity" android:name="data_Name"/>
</activity>
 

代码:

 代码如下 复制代码
ActivityInfo activityInfo = context.getPackageManager()
. getActivityInfo(activity.getComponentName(),
PackageManager.GET_META_DATA);
String dataName=activityInfo.metaData.getString("data_Name");
 

注意:activity.getComponentName()为获取activity实例的ComponentName 也可以用下面的代替:

 代码如下 复制代码
//通过指定一个activity类来生成一个新的ComponentName
ComponentName componentName =new ComponentName(context, SplashActivity.class);
 

3.获取 service标签中的meta-data:
形如:

 代码如下 复制代码
< service ...>
<meta-data android:value="my_service" android:name="data_Name"/>
</service >
 

代码:

 代码如下 复制代码
ComponentName componentName=new ComponentName(context, MyService.class);
ServiceInfo serviceInfo = context.getPackageManager()
. getServiceInfo(componentName,
PackageManager.GET_META_DATA);
String dataName=serviceInfo.metaData.getString("data_Name");
 

注意:在Service里面就没有getComponentName()方法来快速获取到当前的ComponentName了,所以只能通过指定service类的方式来生成一个新的ComponentName

4.获取 receiver标签中的meta-data:
形如:

 代码如下 复制代码
< receiver ...>
<meta-data android:value="my_receiver" android:name="data_Name"/>
</receiver >
 

代码:

 代码如下 复制代码
ComponentName componentName=new ComponentName(context, MyService.class);
ActivityInfo activityInfo = context.getPackageManager()
. getReceiverInfo(componentName,
PackageManager.GET_META_DATA); www.111cn.net
String dataName=activityInfo.metaData.getString("data_Name");
 

注意:在receiver可没有 ReceiverInfo了,而是用的activityInfo来处理的。

最后的注意:我们在获取值的时候都是使用的 是:xxxInfo.metaData.getString(“data_Name”);把所有的值都当成是String来获取的,如果在meta- data中是int型的,如果还是使用getString()方法获取出来的值是为空的,但是metaData提供了这么多种get方法来获取 。

如果metadata 的数据类型是没办法确定的,那么可以直接使用 Object object = metaData.get(key)来获取 ,然后再转化成自己要想的数据类型。

 

关于我们 - 联系我们 - 广告合作 - 网站地图 - 网站声明

QQ群:153638182  投稿邮箱: 578640261@qq.com  皖ICP备-14005058

严禁网站镜像,否则追究法律责任。未经www.52jb.net 同意,不得转载本网站上所有的源代码。

五二脚本每日更新大量关于网页制作网页特效php编程网站优化源码下载的实例教程。