美文网首页我爱编程
从Android 中的meta-data中获取long值

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

作者: pinkong | 来源:发表于2018-04-17 14:32 被阅读0次

项目中有一个社区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()

相关文章

网友评论

    本文标题:从Android 中的meta-data中获取long值

    本文链接:https://www.haomeiwen.com/subject/qogukftx.html