MT6737m进入手机的文件管理器中查看录音文件时的权限异常解决方法

         这是最近在项目中遇到的问题,测试给提Bug时描述如下:录音后进入文件管理器中查看录音文件时,文件管理器停止运行,抓取log后发现是权限异常,刚开始以为在AndroidManifest.xml中加入相应的权限后就可以解决,但实际添加后依然没有起到效果,后来对比手头的另一个样机,是MT6750的就可以正常进入,然后对比两者的文件管理器代码后发现了区别,做如下修改后可解决此问题。


需要修改的文件路径如下:alps/vendor/mediatek/proprietary/packages/apps/FileManager  下的两支文件

1. alps/vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfo.java

注释到如下3部分的代码:

(1)

+//  private static HashMap<String, String> sMimeType3GPPMap = new HashMap<String, String>();

(2)

+//            if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_UNKONW)) {
+//                mimeType = service.update3gppMimetype(this);
+//            }
+//
+//            if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_AUDIO)
+//                    || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_VIDEO)
+//                    || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP2_VIDEO)) {
+//                String name = null;
+//                int sepIndex = mName.lastIndexOf("(");
+//                if (sepIndex > 0) {
+//                    name = mName.substring(0, sepIndex);
+//                } else {
+//                    name = mName.substring(0, mName.indexOf("."));
+//                }
+//                LogUtils.d(TAG, "getFileMimeType ,record the mimetype: " + mimeType + ",name = "
+//                        + name + ",mName = " + mName);
+//
+//                sMimeType3GPPMap.put(name, mimeType);
+//            }

(3)

+//        if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_VIDEO)
+//                || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP2_VIDEO)) {
+//            LogUtils.d(TAG, "getMimeType, a 3gpp or 3g2 file,mimeType=" + mimeType);
+//            return FileInfo.MIMETYPE_3GPP_UNKONW;
+//        }


2. alps/vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/service/FileManagerService.java

注释掉如下代码:

+//    public String update3gppMimetype(FileInfo fileInfo) {
+//        LogUtils.d(TAG, "update3gppMimetype...");
+//        String mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
+//        ContentResolver resolver = getContentResolver();
+//        if (resolver != null && fileInfo != null) {
+//           // fileInfo.setFileMimeType(FileInfo.MIMETYPE_3GPP_VIDEO);
+//            final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
+//            final String[] projection = new String[] { MediaStore.MediaColumns.MIME_TYPE };
+//            final String selection = MediaStore.MediaColumns.DATA + "=?";
+//            final String[] selectionArgs = new String[] { fileInfo
+//                    .getFileAbsolutePath() };
+//            Cursor cursor = null;
+//            try {
+//                cursor = resolver.query(uri, projection, selection,
+//                        selectionArgs, null);
+//                LogUtils.d(TAG, "update3gppMimetype,file:" + fileInfo.getFileAbsolutePath());
+//                if (cursor != null && cursor.moveToFirst()) {
+//                     mimeType = cursor.getString(cursor
+//                            .getColumnIndex(MediaStore.MediaColumns.MIME_TYPE));
+//                    LogUtils.d(TAG, "update3gppMimetype mimeType: " + mimeType);
+//                } else {
+//                    mimeType = fileInfo.getFileOriginMimeType();
+//                    LogUtils.d(TAG, "update3gppMimetype, not find from media,origin mimeType: " + mimeType);
+//                    if (mimeType == null) {
+//                        mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
+//                    }
+//                }
+//            } finally {
+//                if (cursor != null) {
+//                    cursor.close();
+//                }
+//            }
+//        }
+//
+//        return mimeType;
+//    }


以上两只文件中的代码注释掉以后,单编push之后就可以直接访问文件管理器中的录音文件,不会在有权限异常了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MT.EXE是一个网络管理方面的软件,有了这40K的一个程序,居然有大约40项实用功能:   用法: mt.exe <选项> 选项 :  -filter ---更改 TCP/IP 过滤的开头状态 -addport ---添加端口到过滤的允许列表 -setport ---设置端口作为过滤的允许列表 -nicinfo ---列出 TCP/IP 界面信息 -pslist ---列出活动进程 -pskill ---杀毒指定进程  -dlllist ---列出指定进程的 DLL -sysinfo ---列出系统信息 -shutdown ---关闭系统 -reboot ---重启系统 -poweroff ---关闭电源  -logoff ---注销当前用户会话 -chkts ---检查终端服务信息 -setupts ---安装终端服务 -remts ---卸载终端服务  -chgtsp ---重置终端服务端口 -clog ---清除系统日志 -enumsrv ---列出所有服务  -querysrv ---列出指定服务的详细信息 -instsrv ---安装一个服务 -cfgsrv ---更改服务配置 -remsrv ---卸载指定服务 -startsrv ---启动指定服务 -stopsrv ---停止指定服务 -netget ---从 http/ftp 下载 -redirect ---端口重定向  -chkuser ---列出所有账户、sid 和 anti 克隆 -clone ---克隆 admin 到目标  -never ---设置账户看上去从未登录  -killuser ---删除账户,甚至是 "guest" 也可删除 -su ---以 Local_System 权限运行进程 -findpass ---显示所有已登录用户的口令 -netstat ---列出 TCP 连接 -killtcp ---杀死 TCP 连接 -psport ---映射端口到进程  -touch ---设置文件日期和间到指定值 -secdel ---安全擦除文件或目录占用的空间 -regshell ---进入一个控制台注册表编辑 -chkdll ---检测 gina dll 后门
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值