獲取Manifest中標籤的值

2021-06-16 21:50:18 字數 3459 閱讀 3116

在平時我們開發應用的過程中,我們可能需要設定一些動態變數值隨著我們版本的變化一起變化 。在這種情況下,一般我們首先想到的辦法可能就是我們申明乙個靜態的變數,然後在我們的應用中直接使用就行了,以後如果需要修改的時候,我們再找到這個類裡面的定義的地方,再重新賦值即可。。。

當然,我們也可以通過在menifest裡面的meta-data標籤來定義乙個值,然後在我們的應用中直接去讀取即可,這樣,下次如果需要修改值,我們就不必再找到我們的**了,而是在修改我們的版本號的時候,一起就可以修改了。更加方便與便捷。

那麼我們的自己應用裡面應該如何去定義meta-data的值呢?並且怎麼在**中取出我們要想的值 呢?

形如:

>

android:value

="12345"

android:name

=/>

...>

android:name

="data_name"

android:value

="hello my activity"

>

我們分別來看看如何獲取的吧?

形如:

>

android:value

="my_data"

android:name

="data_name"

/>

**:

=context

.getpackagemanager().

(context

.getpackagename

(),packagemanager

.get_meta_data

);string

dataname=.

metadata

.getstring

("data_name"

);

2.獲取 activity標籤中的meta-data:

形如:

...>

android:value

="my_activity"

android:name

="data_name"

/>

**:

activityinfo

activityinfo

=context

.getpackagemanager().

getactivityinfo

(activity

.getcomponentname

(),packagemanager

.get_meta_data

);string

dataname

=activityinfo

.metadata

.getstring

("data_name"

);

注意:activity.getcomponentname()為獲取activity例項的componentname 也可以用下面的代替:

//通過指定乙個activity類來生成乙個新的componentname

componentname

componentname

=new

componentname

(context

,splashactivity

.class

);

3.獲取 service標籤中的meta-data:

形如:

< service ...>

android:value

="my_service"

android:name

="data_name"

/>

>

**:

componentname

componentname

=new

componentname

(context

,myservice

.class

);serviceinfo

serviceinfo

=context

.getpackagemanager().

getserviceinfo

(componentname

,packagemanager

.get_meta_data

);string

dataname

=serviceinfo

.metadata

.getstring

("data_name"

);

注意:在service裡面就沒有getcomponentname()方法來快速獲取到當前的componentname了,所以只能通過指定service類的方式來生成乙個新的componentname

4.獲取 receiver標籤中的meta-data:

形如:

< receiver ...>

android:value

="my_receiver"

android:name

="data_name"

/>

>

**:

componentname

componentname

=new

componentname

(context

,myservice

.class

);activityinfo

activityinfo

=context

.getpackagemanager().

getreceiverinfo

(componentname

,packagemanager

.get_meta_data

);string

dataname

=activityinfo

.metadata

.getstring

("data_name"

);

注意:在receiver可沒有 receiverinfo了,而是用的activityinfo來處理的。

最後的注意:我們在獲取值的時候都是使用的是:***info.metadata.getstring(「data_name」);把所有的值都當成是string來獲取的,如果在meta-data中是int型的,如果還是使用getstring()方法獲取出來的值是為空的,但是metadata提供了這麼多種get方法來獲取 。

如果metadata 的資料型別是沒辦法確定的,那麼可以直接使用 object object = metadata.get(key)來獲取 ,然後再轉化成自己要想的資料型別。

Jsoup獲取xml中標籤

jsoup對於處理html.xml很強大.這裡主要記錄如何獲取一篇xml中的某個節點 這裡封裝的工具類,和我上篇帖子一樣.依賴 com.thoughtworks.xstreamgroupid xstreamartifactid 1.4.9version dependency org.jsoupgro...

在dom中獲取html中標籤

獲取元素的三種方法 1 通過id名獲取元素 2 通過class類名獲取元素 3 通過標籤名直接獲取元素 注 id是唯一的 所以用id獲取到的元素可以直接用,通過class類名和標籤名獲取到的元素是乙個陣列,呼叫的時候需要先獲取到具體的某乙個,然後再呼叫。下面是乙個簡單的案例 通過標籤查詢並獲取標籤 ...

中 標籤 HTML中的標籤

講一下html中檔案標籤和文字標籤的使用 目的是學會使用,所以借助工具可以省好多時間 1.檔案標籤 構成html最基本的標籤 html html文件的根標籤 head 頭標籤。用於引入html文件的一些屬性。引入外部的一些資源 title 標題標籤 body 體標籤 html5中定義該文件是html...