美文网首页我爱编程
从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