解决手机在PC上显示两个存储的问题

本文提供了一种解决手机在PC端显示两个内部存储的问题的方法,通过修改MtpServer.cpp和MtpDatabase.java文件中的特定代码段,有效地防止了同一手机在电脑上显示多个存储设备的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候因为各种外因或内因导致手机在PC端显示两个内部存储的bug.现不多说,直接上代码。

第一步修改的文件:MtpServer.cpp

文件在framework/base下,具体位置自行用命令:find ./ -name MtpServer.cpp 查找

修改内容如下:

void MtpServer::addStorage(MtpStorage* storage){

  std::lock_guard<std::mutex> lg(mMutex);

    //BEGIN Motorola, dinghao1,  Prevent two mobile phone storage on the computer
    if(hasStorage(storage->getStorageID())) {
        ALOGE("this storage id has been added. so return.");
        return;
    }
    //END

    mStorages.push_back(storage);

   sendStoreAdded(storage->getStorageID());

}

自此基本可解决问题

如果碰到基线升级等问题引发复现,可再加入第二步修改:

修改文件:MtpDatabase.java

在framework/base下 具体位置自行用命令:find ./ -name MtpDatabase.java 查找

修改内容如下:

    public void addStorage(StorageVolume storage) {
        MtpStorage mtpStorage = mManager.addMtpStorage(storage);
        //BEGIN Motorola,dinghao1 2019-02-20 Prevent two mobile phone storage on the computer.
        Log.d(TAG,"storage:" + storage+ "storage.getPath():" + storage.getPath());
        removeStorage(storage);
        //ENED
        mStorageMap.put(storage.getPath(), mtpStorage);
        if (mServer != null) {
            mServer.addStorage(mtpStorage);
        }
    }

 

自此可完美解决问题。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值