andorid 配置文件中的meta—data的用法

2024-08-28 23:48

本文主要是介绍andorid 配置文件中的meta—data的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



<meta-data android:name="string"

           android:resource="resource specification"

           android:value="string" />

这是该元素的基本结构.可以包含在

<activity> <activity-alias> <service> <receiver>四个元素中。

这个名字值是额外的任意的可以提供给父组件的数据。一个组件元素能够包含任意数量的meta-data子元素。它们所有的值都会被收集在Bundle对象中并且使其可以作为组件的 PackageItemInfo.metaData 字段。

  一般的值可以通过value属性来指定,但是如果要指定一个资源id作为一个值,那么就要用resource属性来代替。例如:下面的代码就是指定存储在@string/kangaroo 资源中的zoo名字。

       <meta-data android:name="zoo" android:value="@string/kangaroo" />

另一方面,利用resource属性将指定zoo的资源id号,并不是存储在资源中的资源值。

<meta-data android:name="zoo" android:resource="@string/kangaroo" />

当要给组件提供多个复杂的数据时,在这里并不推荐使用多重meta-data元素,推荐你存储这些数据在一个资源文件中并且利用resource属性来通知它的id给组件。




一,在activity中

xml中配置如下

[html] view plain copy print ?
  1. <!-- Activity -->  
  2.         <activity android:name=".MyActivity" android:label="@string/app_name">  
  3.             <intent-filter>  
  4.                 <action android:name="android.intent.action.MAIN" />  
  5.                 <category android:name="android.intent.category.LAUNCHER" />  
  6.             </intent-filter>  
  7.             <meta-data android:name="activity_name" android:value="activity_value" />  
  8.         </activity>  
<!-- Activity --><activity android:name=".MyActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-data android:name="activity_name" android:value="activity_value" /></activity>

java代码如下

[html] view plain copy print ?
  1. ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(  
  2.                     getComponentName(), PackageManager.GET_META_DATA);  
  3.             String msg = actInfo.metaData.getString("activity_name");  
ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);String msg = actInfo.metaData.getString("activity_name");


二,在service中

xml中配置如下

[html] view plain copy print ?
  1. <!-- 服务 -->  
  2.         <service android:name=".MyService">  
  3.             <meta-data android:name="service_name" android:value="service_value" />  
  4.         </service>  
<!-- 服务 --><service android:name=".MyService"><meta-data android:name="service_name" android:value="service_value" /></service>

java代码如下

[html] view plain copy print ?
  1. ComponentName cn = new ComponentName(this, MyService.class);  
  2.         try {  
  3.             ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,  
  4.                     PackageManager.GET_META_DATA);  
  5.         } catch (NameNotFoundException e) {  
  6.             e.printStackTrace();  
  7.         }  
  8.         String msg = serInfo.metaData.getString("service_name");  
ComponentName cn = new ComponentName(this, MyService.class);try {ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,PackageManager.GET_META_DATA);} catch (NameNotFoundException e) {e.printStackTrace();}String msg = serInfo.metaData.getString("service_name");


三,在application中

xml中配置如下

[html] view plain copy print ?
  1. <!-- app -->  
  2.         <meta-data android:name="application_name" android:value="application_value" />  
<!-- app --><meta-data android:name="application_name" android:value="application_value" />

java代码如下

[html] view plain copy print ?
  1. ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(  
  2.                     getPackageName(), PackageManager.GET_META_DATA);  
  3.             String msg = appInfo.metaData.getString("application_name");  
ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);String msg = appInfo.metaData.getString("application_name");


四,在receiver中,也就是广播接收者(拨打电话的时候会看到toast消息)
xml中配置如下

[html] view plain copy print ?
  1. <receiver android:name=".MyReceiver">  
  2.             <meta-data android:name="receiver_name" android:value="receiver_value" />  
  3.             <intent-filter>  
  4.                 <action android:name="android.intent.action.PHONE_STATE" />  
  5.             </intent-filter>  
  6.         </receiver>  
<receiver android:name=".MyReceiver"><meta-data android:name="receiver_name" android:value="receiver_value" /><intent-filter><action android:name="android.intent.action.PHONE_STATE" /></intent-filter></receiver>

java代码如下

[html] view plain copy print ?
  1. if (TextUtils.equals("android.intent.action.PHONE_STATE", intent  
  2.                 .getAction())) {  
  3.             ComponentName cn = new ComponentName(context, MyReceiver.class);  
  4.             try {  
  5.                 ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,  
  6.                         PackageManager.GET_META_DATA);  
  7.             } catch (NameNotFoundException e) {  
  8.                 e.printStackTrace();  
  9.             }  
  10.             String msg = info.metaData.getString("receiver_name");  
  11.             // 打电话测试即可  
  12.             Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
  13.         }  

这篇关于andorid 配置文件中的meta—data的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116242

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

这些ES6用法你都会吗?

一 关于取值 取值在程序中非常常见,比如从对象obj中取值 const obj = {a:1b:2c:3d:4} 吐槽: const a = obj.a;const b = obj.b;const c = obj.c;//或者const f = obj.a + obj.b;const g = obj.c + obj.d; 改进:用ES6解构赋值

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

15 组件的切换和对组件的data的使用

划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写