Android 系统修改笔记:修改盘符名称


Android 系统的盘符名,又叫 MTP label 作为一个经常性的定制化项目,但是日常的修改,却很少去关注到是如何起作用的,这里简单的做个记录,包括修改方法和调用代码的位置,针对目前版本的6.0到8.1 ,都是相似的改法:

1.  修改方法:

在 build/tools/buildinfo.sh 中查找 ro.product.name 对应的宏的名称PRODUCT_NAME,然后在target/product/.mk文件中添加或修改该宏的定义,如:

PRODUCT_NAME    := mylabelname

注:不能有空格。

2. 调用的代码:

其代码调用在如下路径:frameworks/base/media/java/android/mtp/MtpDatabase.java 的 getDeviceProperty,其具体如下:

private int getDeviceProperty(int property, long[] outIntValue, char[] outStringValue) {
        switch (property) {
            case MtpConstants.DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER:
            case MtpConstants.DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME:
                // writable string properties kept in shared preferences
                // 修改此处的 value 值的获取就可以改变盘符名称。
                String value = mDeviceProperties.getString(Integer.toString(property), "");
                int length = value.length();
                if (length > 255) {
                    length = 255;
                }
                value.getChars(0, length, outStringValue, 0);
                outStringValue[length] = 0;
                return MtpConstants.RESPONSE_OK;

            case MtpConstants.DEVICE_PROPERTY_IMAGE_SIZE:
                // use screen size as max image size
                Display display = ((WindowManager)mContext.getSystemService(
                        Context.WINDOW_SERVICE)).getDefaultDisplay();
                int width = display.getMaximumSizeDimension();
                int height = display.getMaximumSizeDimension();
                String imageSize = Integer.toString(width) + "x" +  Integer.toString(height);
                imageSize.getChars(0, imageSize.length(), outStringValue, 0);
                outStringValue[imageSize.length()] = 0;
                return MtpConstants.RESPONSE_OK;

            // DEVICE_PROPERTY_BATTERY_LEVEL is implemented in the JNI code

            default:
                return MtpConstants.RESPONSE_DEVICE_PROP_NOT_SUPPORTED;
        }
    }

版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/note-of-android-system-about-mtp-name.html

历史上的今天:

  1. 2017:  Android Linux内核驱动编写简要步骤说明.(1)
  2. 2017:  嵌入式编程常见问题及标准答案(持续收集)(0)
  3. 2017:  windows批处理命令教程(持续更新)(0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注