欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)獲取meta-data和build.gradle的值

 更新時間:2020年03月24日 15:13:52   作者:HUandroid  
這篇文章主要介紹了Android實(shí)現(xiàn)獲取meta-data和build.gradle的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

有時候會用到meta-data中的參數(shù),比如定義的渠道號,類似友盟統(tǒng)計。也會用到定義在build.gradle文件中android標(biāo)簽下的defaultConfig標(biāo)簽下,添加manifestPlaceholders標(biāo)簽中,有可能也會用到渠道值。

<meta-data
      android:name="UMENG_CHANNEL"
      android:value="0"/>

首先獲取meta-data中的值,直接看方法:

 /**
   * 不同的類型要區(qū)別獲取,以下是String類型的
   * @param context 上下午
   * @param metaName meta-data定義的名字
   * @param defaultValue 默認(rèn)值
   * @return
   */
  public static String getAppMetaDataString(Context context, String metaName, String defaultValue) {
    try {
      //application標(biāo)簽下用getApplicationinfo,如果是activity下的用getActivityInfo
      //Sting類型的用getString,Boolean類型的getBoolean,其他具體看api
      String value = context.getPackageManager()
            .getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA)
          .metaData.getString(metaName, defaultValue);
      return value;
    } catch (PackageManager.NameNotFoundException e) {
      e.printStackTrace();
      return defaultValue;
    }
  }

獲取build.gradle中的值:

 manifestPlaceholders = [
        JPUSH_PKGNAME : applicationId,
        JPUSH_APPKEY : "xxxxxxxxxxxxxxxxx", //JPush上注冊的包名對應(yīng)的appkey.
        JPUSH_CHANNEL : "developer-default", //暫時填寫默認(rèn)值即可.
    ]

原理是一樣的,manifestPlaceholders標(biāo)簽下的值需要在清單文件AndroidManifest.xml中占位顯示,這里占位極光渠道號(ps:不知道極光文檔有沒有直接獲取的):

這里 name 為 名字隨意,不重復(fù)就行,value 為manifestPlaceholders下的定義的值,必須采用 ${變量值}

<meta-data android:name="JPUSH_CHANNEL"
          android:value="${JPUSH_CHANNEL}"/>

同用方法

 /**
   * 獲取MetaData信息
   *
   * @param name
   * @param def
   * @return
   */
  public static String getMetaDataValue(Context context, String name,
                     String def) {
    String value = getMetaDataValue(context, name);
    return (value == null) ? def : value;
  }

  public static String getMetaDataValue(Context context, String name) {
    Object value = null;
    PackageManager packageManager = context.getPackageManager();
    ApplicationInfo applicationInfo;
    try {
      applicationInfo = packageManager.getApplicationInfo(
          context.getPackageName(), PackageManager.GET_META_DATA);
      if (applicationInfo != null && applicationInfo.metaData != null) {
        value = applicationInfo.metaData.get(name);
      }
    } catch (PackageManager.NameNotFoundException e) {
      throw new RuntimeException(
          "Could not read the name in the manifest file.", e);
    }
    if (value == null) {
      throw new RuntimeException("The name '" + name
          + "' is not defined in the manifest file's meta data.");
    }
    return value.toString();
  }

所以又回到了上一步,去獲取meta-data中的值了。說到底還是熟不熟悉PackageManager

補(bǔ)充知識:android meta data值獲取的坑

獲取meta data的時候,正常的非純數(shù)字的字符串,設(shè)置在value里面,用getString獲取是正常的。

但是如果含有純數(shù)字的字符串,用getString獲取返回為null。也許你會想到用getInt,getLong獲取,很抱歉,也可能是null。

解決方式有兩種:

一.

繼續(xù)使用value="1234567890",但是在純數(shù)字字符串開頭加上"\ "(反斜杠+空格)這樣系統(tǒng)會自動讀取為字符串而不是其他格式,形如

<meta-data
  android:name="appkey"
  android:value="\ 1234567890" />

二. 使用resources屬性通過getInt獲取資源id,再獲取資源id對應(yīng)的值,這種方式可擴(kuò)展性很強(qiáng),可以獲取所有資源而不只是string,形如

<meta-data
  android:name="appkey"
  android:resource="@string/AppKey" />

在strings.xml中定義AppKey的值為

<string name="AppKey">1234567890</string>

三.Application下獲取meta資源的方式

public static String getStringMetaData(String name) {
  int valueId = 0;
  try {
    ApplicationInfo appInfo = getApplicationContext().getPackageManager()
        .getApplicationInfo(getApplicationContext().getPackageName(),
            PackageManager.GET_META_DATA);
    valueId = appInfo.metaData.getInt(name);
    if (valueId != 0) {
      return getApplicationContext().getResources().getString(valueId);
    }
  } catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
  }
  return "";
}

以上這篇Android實(shí)現(xiàn)獲取meta-data和build.gradle的值就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android仿QQ可拉伸頭部控件

    Android仿QQ可拉伸頭部控件

    這篇文章主要為大家詳細(xì)介紹了Android仿QQ可拉伸頭部控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android沉浸式狀態(tài)欄 + actionBar漸變 + scrollView頂部伸縮效果

    Android沉浸式狀態(tài)欄 + actionBar漸變 + scrollView頂部伸縮效果

    這篇文章主要介紹了Android沉浸式狀態(tài)欄 + actionBar漸變 + scrollView頂部伸縮效果即QQ好友動態(tài)頁面效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Android實(shí)現(xiàn)緩存大圖到SD卡

    Android實(shí)現(xiàn)緩存大圖到SD卡

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)緩存大圖到SD卡,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android自定義圓環(huán)倒計時控件

    Android自定義圓環(huán)倒計時控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義圓環(huán)倒計時控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android之利用EventBus發(fā)送消息傳遞示例

    Android之利用EventBus發(fā)送消息傳遞示例

    本篇文章主要介紹了Android之利用EventBus進(jìn)行消息傳遞示例。EventBus是一款針對Android優(yōu)化的發(fā)布/訂閱事件總線,非常具有實(shí)用價值,需要的朋友可以參考下。
    2017-02-02
  • Android編程讀取sd卡中圖片的方法

    Android編程讀取sd卡中圖片的方法

    這篇文章主要介紹了Android讀取sd卡中圖片的方法,涉及Android權(quán)限操作,目錄及文件操作的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2016-04-04
  • OpenGL?Shader實(shí)現(xiàn)陰影遮罩效果

    OpenGL?Shader實(shí)現(xiàn)陰影遮罩效果

    這篇文章主要介紹了如何利用OpenGL?Shader實(shí)現(xiàn)陰影遮罩效果,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)OpenGL有一定幫助,需要的可以參考一下
    2022-02-02
  • Android 使用PDF.js瀏覽pdf的方法示例

    Android 使用PDF.js瀏覽pdf的方法示例

    這篇文章主要介紹了Android 使用PDF.js瀏覽pdf的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Android  SharedPreferences四種操作模式使用詳解

    Android SharedPreferences四種操作模式使用詳解

    這篇文章主要介紹了Android SharedPreferences四種操作模式使用詳解的相關(guān)資料,這里介紹了獲取Android SharedPreferences的兩種方法及比較,和操作模式的介紹,需要的朋友可以參考下
    2017-07-07
  • Android界面 NotificationManager使用Bitmap做圖標(biāo)

    Android界面 NotificationManager使用Bitmap做圖標(biāo)

    Android界面 NotificationManager使用Bitmap做圖標(biāo),如何實(shí)現(xiàn)呢,本文將介紹解決方法,需要的朋友可以參考下
    2012-12-12

最新評論