2017年9月22日 星期五

使用Meta-data的方式。PackagetManager、ActivityInfo、ComponentName

AndroidManifest檔中,Application跟Activity下可以加入<meta-data>這個標籤。

這個標籤有兩大類屬性,一個是name,另一個就是value。


可以使用(加入)<meta-data>標籤的類別除了Application和Activity外,Service和Reciever也可以。

主要取得方式是在加入了<meta-data>標籤的類別實作下呼叫getPackageManager,然後再用PackageManager取得ApplicationInfo/ActivityInfo/ServiceInfo/RecieverInfo。

取得各種Info需要搭配ComponentName,不同的狀況下取得ComponentName的方式也都不同。

 Activity有自帶getComponentName()。

 Service和Reciever下要使用ComponentName這個類別,它需要傳入一個Context,和Service或Reciever的Class。

Application則是用getPackageName取得的資料即可。

取得Info後,裏頭有個參數物件「meta」,下面有各種取得資料的函數。只要找到相對應的函數(例如meta-data是字串,就找getString..以此類推),然後輸入名稱(<meta-data>標籤中的name)即可。



========================================================

應用上,這應種是種將程式的邏輯/功能的控制參數分散到AndroidManufest中去設定的技巧。

例如將「連線網址」寫成一個<meta-data>,就可以用一個父類別快速大量複製出連線到不同網站但有相似行為的Activity甚至是APP。

沒有留言:

張貼留言