生活随笔
收集整理的這篇文章主要介紹了
android 读取manifest的数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 今天,是實在不知道該寫點什么,但是還是想保持寫博客的習慣,所以在網上找了找資料,于是寫了這篇博客。內容很簡單,大家如果有興趣,可以自己在網上搜索相關的資料。
在AndroidManifest.xml清單文件中 我們有時會看到如下類似的<meta-data ... >元素開始的配置內容:
<meta-dataandroid:name="com.google.android.maps.v2.API_KEY"android:value="AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo" />
<meta-dataandroid:name="com.google.android.gms.version"android:value="@integer/google_play_services_version" />
標簽<meta-data>是提供組件額外的數據用的,它本身就是一個鍵值對,可以自定義名稱和值。它可以包含在以下組件當中:
<activity>、<application> 、<service> 和 <receiver>
一、如何配置<mate-data...>元素:
標簽<meta-data>元素的配置語法如下:
<meta-data android:name="string"android:resource="resource specification"android:value="string" />
說明:一般的值可以通過value屬性來指定,但是如果要指定一個資源的id,則需要使用resource屬性來配置。
<meta-data android:name="api_key" android:value="@string/api_key" />
二、如何獲取<mate-data...>元素配置的值
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.metadatatest"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="8" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><meta-data android:name="mTag" android:value="@string/meta_application"></meta-data><activityandroid:name="com.example.metadatatest.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><!-- 一般的值可以通過value屬性來指定,但是如果要指定一個資源id作為一個值,那么就要用resource屬性來代替。 --><meta-data android:name="mTag" android:value="@string/meta_activity"></meta-data><!--利用resource屬性將指定 mResource 的資源id號--><meta-data android:name="mResource" android:resource="@drawable/ic_launcher"></meta-data></activity><service android:name="com.example.metadatatest.service.DemoService"><meta-data android:name="mTag" android:value="@string/meta_service"></meta-data></service><receiver android:name="com.example.metadatatest.receiver.DemoReceiver"><intent-filter android:priority="1000"><action android:name="android.intent.action.BOOT_COMPLETED"/></intent-filter><meta-data android:name="mTag" android:value="@string/meta_broadcast"></meta-data></receiver></application></manifest>
在activity里獲取manifest的mata元素的值
package com.example.metadatatest;import com.example.metadatatest.receiver.DemoReceiver;
import com.example.metadatatest.service.DemoService;
import android.app.Activity;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener {private static final String TAG = MainActivity.class.getSimpleName();private ImageView iv_pic;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findView();}private void findView() {Button bt_read_activity = (Button) findViewById(R.id.bt_read_activity);Button bt_read_service = (Button) findViewById(R.id.bt_read_service);Button bt_read_broadcast = (Button) findViewById(R.id.bt_read_broadcast);Button bt_read_application = (Button) findViewById(R.id.bt_read_application);iv_pic = (ImageView) findViewById(R.id.iv_pic);bt_read_activity.setOnClickListener(this);bt_read_service.setOnClickListener(this);bt_read_broadcast.setOnClickListener(this);bt_read_application.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_read_activity:readMetaDataFromActivity();break;case R.id.bt_read_service:readMetaDataFromService();break;case R.id.bt_read_broadcast:readMetaDataFromBroadCast();break;case R.id.bt_read_application:readMetaDataFromApplication();break;default:break;}}/*** 讀取application 節點 meta-data 信息*/private void readMetaDataFromApplication() {try {ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);String mTag = appInfo.metaData.getString("mTag");Log.e(TAG, "mTag=" + mTag);} catch (NameNotFoundException e) {e.printStackTrace();}}/*** 讀取BroadcastReceiver 節點 meta-data 信息*/private void readMetaDataFromBroadCast() {try {ComponentName cn = new ComponentName(this, DemoReceiver.class);ActivityInfo info = this.getPackageManager().getReceiverInfo(cn,PackageManager.GET_META_DATA);String mTag = info.metaData.getString("mTag");Log.e(TAG, "mTag=" + mTag);} catch (NameNotFoundException e) {e.printStackTrace();}}/*** 讀取Service 節點 meta-data 信息*/private void readMetaDataFromService() {try {ComponentName cn = new ComponentName(this, DemoService.class);ServiceInfo info = this.getPackageManager().getServiceInfo(cn,PackageManager.GET_META_DATA);String mTag = info.metaData.getString("mTag");Log.e(TAG, "mTag=" + mTag);} catch (NameNotFoundException e) {e.printStackTrace();}}/*** 讀取Activity 節點 meta-data 信息*/private void readMetaDataFromActivity() {ActivityInfo info;try {info = this.getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);String mTag = info.metaData.getString("mTag");Log.e(TAG, "mTag=" + mTag);//讀取圖片資源idint mResource = info.metaData.getInt("mResource");iv_pic.setImageResource(mResource);} catch (NameNotFoundException e) {e.printStackTrace();}}}
以上是我把搜集的資料整理出來的內容,寫得比較雜亂,所以大家看不懂可以自己在網上搜索資料看一下。
android 讀取manifest的數據就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 读取manifest的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。