zoukankan      html  css  js  c++  java
  • main xml信息

    引用:http://www.mobiletrain.org/lecture/doc/android/2011-04/417.html

    context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;//version

    Sometimes you have the need to set up some app-wide configuration information in an Android app or need to create a class that can be used in multiple projects with a generic way of setting configuration values. This is particularly useful for things like API keys that will probably be different across apps but should be accessible in the same way. There are several ways to do it, but the one I’ve come to prefer is adding a meta-data node to the AndroidManifest.xml file.

    This field can be used to store a boolean, float, int, or String and is later accessed by the Bundle method for your data type (e.g., getInt()). Here is an example of how to define a value in your AndroidManifest.xml:

    1. <?xml version="1.0" encoding="utf-8"?>
       
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       
    3.   package="com.example.readmetadata"
       
    4.   android:versionCode="1"
       
    5.   android:versionName="1.0">
       
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
       
    7.         <activity android:name=".MainMenu" android:label="@string/app_name">
       
    8.             <intent-filter>
       
    9.                 <action android:name="android.intent.action.MAIN" />
       
    10.                 <category android:name="android.intent.category.LAUNCHER" />
       
    11.             </intent-filter>
       
    12.         </activity>
       
    13.         <meta-data android:name="my_api_key" android:value="mykey123" />
       
    14.     </application>
       
    15.     <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
       
    16. </manifest>

    Reading this meta-data takes just a few lines of Java:

    1. try {
       
    2.     ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
       
    3.     Bundle bundle = ai.metaData;
       
    4.     String myApiKey = bundle.getString("my_api_key");
       
    5. } catch (NameNotFoundException e) {
       
    6.     Log.e(TAG, "Failed to load meta-data, NameNotFound: " + e.getMessage());
       
    7. } catch (NullPointerException e) {
       
    8.     Log.e(TAG, "Failed to load meta-data, NullPointer: " + e.getMessage());
       
    9. }

    Activity extends ContextWrapper which has a getPackageManager() method. That method returns the PackageManager, which is used to fetch the ApplicationInfo, passing the package name and the meta-data flag. The returned ApplicationInfo contains a field, metaData, which is actually a Bundle containing all the meta data. Line 4 fetches a String that is the same as the “android:name” parameter in the XML.

    That sounds more complicated than it really is. Basically, if you have an Activity, you can fetch the Bundle that has all your meta-data from the AndroidManifest and use it throughout the app.

  • 相关阅读:
    mysql 加入列,改动列,删除列。
    C语言中的static 具体分析
    [Python网络编程]gevent httpclient以及网页编码
    iOS学习之 plist文件的读写
    数据库设计中的14个技巧
    最简单的基于FFMPEG的封装格式转换器(无编解码)
    一次重要的爱情婚姻抉择,您怎么看?
    2014年到期的myeclipse5.5.1注冊码
    24点经典算法
    使用val()方法设置表单中的默认选中项
  • 原文地址:https://www.cnblogs.com/sode/p/2407239.html
Copyright © 2011-2022 走看看