我爱编程

从Android 中的meta-data中获取long值

2018-04-17  本文已影响0人  pinkong

项目中有一个社区ID的值,是定死的,但是测试环境和正式环境的不一样。很自然,要配置在gradle中:

    buildTypes {
        debug {
            manifestPlaceholders = [HOME_FORUM_VALUE            :"50000000010191"]
        }
        release {
            manifestPlaceholders = [ HOME_FORUM_VALUE            :"50000000059260"]
        }

然后在Androidmanifest.xml中定义:

        <!--首页社区-->
        <meta-data
            android:name="HOME_FORUM"
            android:value="${HOME_FORUM_VALUE}" />

使用时可以这样取出:

        ApplicationInfo appInfo = null;
        try {
            appInfo = this.getPackageManager().getApplicationInfo(
                    getPackageName(), PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String sForumId = String.valueOf(appInfo.metaData.get("HOME_FORUM"));
        long forumId = Long.parseLong(sForumId, 10);

但是问题来了,这个地方取出的竟然是一个浮点数5.0E13.
我的解决方法是稍微做个变通,设置long值的时候在数字前面加个字符,取值时再去掉

    buildTypes {
        debug {
            manifestPlaceholders = [HOME_FORUM_VALUE            :"L50000000010191"]
        }
        release {
            manifestPlaceholders = [ HOME_FORUM_VALUE            :"L50000000059260"]
        }
      String sForumId = appInfo.metaData.getString("HOME_FORUM");
      long forumId = Long.parseLong(sForumId.substring(1), 10);

支持的数据类型

类型 获取方法
string getString()
int getInt()
bool getBoolean()
float getFloat()
上一篇下一篇

猜你喜欢

热点阅读