Android使用元数据实现配置信息的传递方法详细介绍

目录
  • 前序
  • 一、在代码中获取元数据
  • 二、给应用页面注册快捷方式

前序

格式

<meta-data android:name="weather" android:value="xxx"/>

什么场景需要使用?

使用第三方SDK,需要在APP应用内使用别的APP的整合包,如使用微信登录、某某地图等。

一、在代码中获取元数据

在java代码中,获取元数据信息的步骤分为下列三步:

  • 调用getPackageManager方法获得当前应用的包管理器;
  • 调用包管理器的getActivityInfo方法获得当前活动的信息对象;
  • 活动信息对象的metaData是Bundle包裹类型,调用包裹对象的getString即可获得指定名称的参数值。

例:从清单文件中获取元数据并显示到屏幕上

清单文件

        <activity
            android:name=".MetaDataActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="weather" android:value="xxx"/>
        </activity>

xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_meta"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

java类

public class MetaDataActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_meta_data);
        TextView tv_meta = findViewById(R.id.tv_meta);
        //获取应用包管理器
        PackageManager pm = getPackageManager();
            try {
                //从应用包管理器中获取当前的活动信息
                ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
                //获取活动附加的元数据信息
                Bundle bundle = info.metaData;
                String weather = bundle.getString("weather");
                tv_meta.setText(weather);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
    }
}

运行结果

二、给应用页面注册快捷方式

元数据不仅能传递简单的字符串参数,还能传送更复杂的资源数据,如支付宝的快捷式菜单。

利用元数据配置快捷菜单

元数据的meta-data标签除了前面的name属性和value属性,还拥有resource属性,该属性可指定一个XML文件,表示元数据想要的复杂信息保存于XML数据之中。

利用元数据配置快捷菜单的步骤如下:

  • 在res/values/strings.xml添加各个菜单项名称的字符串配置
  • 创建res/xml/shortcuts.xml,在该文件中填入各组菜单项的快捷方式定义。
  • 给activity节点注册元数据的快捷菜单配置。

例:长按应用出现快捷菜单

清单文件AndroidManifest.xml

     <activity
            android:name=".ActStartActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/>
        </activity>

新建shortcuts.xml文件用于配置快捷菜单

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:shortcutId="first"
        android:enabled="true"
        android:icon="@mipmap/ic_launcher"
        android:shortcutLongLabel="@string/first_long"
        android:shortcutShortLabel="@string/first_short">
<!--文字太长则显示shotLabel ↑-->
<!--点击选项跳转到的页面 ↓-->
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.chapter2"
            android:targetClass="com.example.chapter2.ActStartActivity"/>
        <categories android:name="android.shortcut.conversation"/>
    </shortcut>
</resources>

运行结果:长按出现快捷菜单

到此这篇关于Android使用元数据实现配置信息的传递方法详细介绍的文章就介绍到这了,更多相关Android传递配置信息内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android获取手机配置信息具体实现代码

    复制代码 代码如下: StringBuilder phoneInfo = new StringBuilder(); phoneInfo.append("Product: " + android.os.Build.PRODUCT + System.getProperty("line.separator")); phoneInfo.append( "CPU_ABI: " + android.os.Build.CPU_ABI + System.getP

  • Android使用元数据实现配置信息的传递方法详细介绍

    目录 前序 一.在代码中获取元数据 二.给应用页面注册快捷方式 前序 格式 <meta-data android:name="weather" android:value="xxx"/> 什么场景需要使用? 使用第三方SDK,需要在APP应用内使用别的APP的整合包,如使用微信登录.某某地图等. 一.在代码中获取元数据 在java代码中,获取元数据信息的步骤分为下列三步: 调用getPackageManager方法获得当前应用的包管理器: 调用包管理器的

  • Android webview加载H5方法详细介绍

    目录 1,安卓APP 怎么用webview加载H5 2,H5怎么调用安卓定义的方法 3,安卓怎么调用H5定义的方法 这篇文章主要阐述3个知识点 安卓APP 怎么用webview加载H5 H5怎么调用安卓定义的方法 安卓怎么调用H5定义的方法 1,安卓APP 怎么用webview加载H5 安卓端定义个webview xml 页面,代码如下所示: <?xml version="1.0" encoding="utf-8"?> <WebView xmlns

  • Mybatis中SqlMapper配置的扩展与应用详细介绍(1)

    奋斗了好几个晚上调试程序,写了好几篇博客,终于建立起了Mybatis配置的扩展机制.虽然扩展机制是重要的,然而如果没有真正实用的扩展功能,那也至少是不那么鼓舞人心的,这篇博客就来举几个扩展的例子. 这次研读源码的起因是Oracle和MySQL数据库的兼容性,比如在Oracle中使用双竖线作为连接符,而MySQL中使用CONCAT函数:比如Oracle中可以使用DECODE函数,而MySQL中只能使用标准的CASE WHEN:又比如Oracle中可以执行DELETE FORM TABLE WHER

  • Android中imageview.ScaleType使用方法详细介绍

    Android中imageview.ScaleType使用方法详细介绍 ScaleType属性用以表示显示图片的方式,共有8种取值: ScaleType.CENTER:图片大小为原始大小,如果图片大小大于ImageView控件,则截取图片中间部分,若小于,则直接将图片居中显示. ScaleType.CENTER_CROP:将图片等比例缩放,让图像的短边与ImageView的边长度相同,即不能留有空白,缩放后截取中间部分进行显示. ScaleType.CENTER_INSIDE:将图片大小大于Im

  • Android 使用jarsigner给apk签名的方法详细介绍

    Android 使用jarsigner给apk签名的方法详细介绍 工作中APP功能完成以后往往需要往应用商店提交一些内容,如商店中存在本公司别的人员提交的APP,往往需要进行认领,应用商店会让开发者下载空的APK,然后使用自己APP的签名文件进行签名,认证,这里简单说一下如何使用jarsigner命令进行签名. 该arsigner命令在jdk中可以找到, 简单说明一下具体参数: -verbose:签名命令标识符. -keystore:后面跟着的是你签名使用的密钥文件(keystore)的绝对路径

  • Vue路由配置方法详细介绍

    目录 手动配置Vue-router环境 组件内部跳转路由与传参useRouter,useRoute 手动配置Vue-router环境 1.下载包: npm i vue-router --save或者 npm i vue-router --S 或者用cdn引入 2.创建路由的js文件(路由.子路由.重定向.开启history模式) createRouter.createWebHistory //路由文件 import { createRouter, createWebHistory } from

  • Android 通过Intent使用Bundle传递对象详细介绍

    Android 通过Intent使用Bundle传递对象 Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法. 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中使用的是Serializable,而谷歌在Android使用了自定义的Parcelable. 两种序列化方式的区别: 1.在使用内存的时候,Parcelable比Serializa

  • Android onCreate( )方法详细介绍

    onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

  • Android入门:广播发送者与广播接收者详细介绍

    一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语

  • 配置IIS应用程序池的详细介绍(iis6)

    IIS应用程序池优化方案 服务器经常产生"应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制.进程 ID 是 '3504'."的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题.解决方法如下(红色字为标记): Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->右击属性 一.回收 1.回收工作进程(分钟):选中,值为1740 (800) 2.回收工作进程(请求数目):(不选)(原先设置

随机推荐