zoukankan      html  css  js  c++  java
  • Android之读取 AndroidManifest.xml 中的数据:版本号、应用名称、自定义KV数据(metadata)

    转:http://www.2cto.com/kf/201208/151123.html

    Android开发中我们常常需要知道,当前应用的版本信息。可以进行自动升级判断。扩展自定义数据 meta-data, 这些数据都在AndroidManifest.xml .我们如何获取这些信息呢?


    下来示例如何读取这些数据。

    1 版本信息、应用名称

    2 Appliction 的Meta-data

    3 Activity中的Meta-data


    AndroidManifest.xml中的定义如下:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="hpc.cai.test01"
    android:versionCode="1"
    android:versionName="1.0" >
    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <meta-data
    android:name="tel"
    android:value="cdma-13366350377" >
    </meta-data>
    <meta-data
    android:name="channel"
    android:value="eben" />


    <activity
    android:name="hpc.cai.test.Test1Activity"
    android:label="@string/app_name" >
    <meta-data
    android:name="name"
    android:value="自强不息" >
    </meta-data>
    <meta-data
    android:name="city"
    android:value="北京" />


    <intent-filter>
    <action android:name="android.intent.action.MAIN" />


    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>


    java 代码:


    /**
    * activity MetaData读取
    */
    private void testActivityMetaData() {
    ActivityInfo info;
    try {
    info = getPackageManager().getActivityInfo(getComponentName(),
    PackageManager.GET_META_DATA);


    String msg = info.metaData.getString("name");
    System.out.println("name:" + msg);


    msg = info.metaData.getString("city");
    System.out.println("city:" + msg);


    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /**
    * appliction MetaData读取
    */
    private void testApplicationMetaData() {
    ApplicationInfo info;
    try {
    info = this.getPackageManager().getApplicationInfo(
    getPackageName(), PackageManager.GET_META_DATA);


    String msg = info.metaData.getString("tel");
    System.out.println("tel:" + msg);


    msg = info.metaData.getString("channel");
    System.out.println("channel:" + msg);


    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /**
    * 测试版本信息
    */www.2cto.com
    private void getVersion(){
    PackageInfo pkg;
    try {
    pkg = getPackageManager().getPackageInfo(getApplication().getPackageName(), 0);
    String appName = pkg.applicationInfo.loadLabel(getPackageManager()).toString();
    String versionName = pkg.versionName;
    System.out.println("appName:" + appName);
    System.out.println("versionName:" + versionName);
    } catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    输出如下:

    16:37:54.442: I/System.out(10213): appName:Test1
    16:37:54.442: I/System.out(10213): versionName:1.0
    16:37:54.442: I/System.out(10213): tel:cdma-13366350377
    16:37:54.442: I/System.out(10213): channel:eben
    16:37:54.452: I/System.out(10213): name:自强不息
    16:37:54.452: I/System.out(10213): city:北京


  • 相关阅读:
    2012工作计划!
    造船篇系统实施(新老衔接工作)
    Android学习摘要一之Android历史
    DEVReport控件使用方法
    造船篇 前传
    软件实施(1)
    茫然疑问未来
    造船篇钢材管理
    wcf身份验证问题
    IDL中关于波段计算的问题
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2780274.html
Copyright © 2011-2022 走看看