1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Android實現(xiàn)獲取meta-data和build.gradle的值

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

      創(chuàng)新互聯(lián)公司是一家專業(yè)提供西寧企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都做網(wǎng)站、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為西寧眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。

      首先獲取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下的定義的值,必須采用 ${變量值}

      同用方法

       /**
         * 獲取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

      補充知識:android meta data值獲取的坑

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

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

      解決方式有兩種:

      一.

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

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

      在strings.xml中定義AppKey的值為

      1234567890

      三.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實現(xiàn)獲取meta-data和build.gradle的值就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


      當(dāng)前文章:Android實現(xiàn)獲取meta-data和build.gradle的值
      文章起源:http://ef60e0e.cn/article/pgsigo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        布拖县| 洪湖市| 顺义区| 安吉县| 阿坝县| 卓资县| 曲麻莱县| 北流市| 河津市| 玛曲县| 镇康县| 山阳县| 甘谷县| 宕昌县| 崇仁县| 台东县| 乌拉特前旗| 宝山区| 永修县| 外汇| 葵青区| 洛扎县| 芦溪县| 安溪县| 泽普县| 深州市| 邓州市| 平乡县| 桐城市| 大余县| 丰台区| 昭平县| 军事| 东乌| 嘉祥县| 闵行区| 惠州市| 象州县| 双江| 谷城县| 剑川县|