Android 7.1 系统挂载U盘后,无法读写

7.1 系统挂载U盘后,无法读写

U盘挂载后,执行 mount命令,查找所有挂载的路径。
发现U盘挂载在 /mnt/media_rw/2E3C-B9C3 下,第三方应用无法读写U盘中信息。由于权限问题所致。
修改: 添加权限。路径:framework/base/data/etc/platform.xml

 - <permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 - <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

+ <permission android:name="android.permission.READ_EXTERNAL_STORAGE">
<group gid ="media_rw" />
<permission />

+ <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
<group gid ="media_rw" />
<permission />

第三方应用代码:获取U盘挂载路径

    public static String getUdiskPath() {
        String upath = "";
        try {
            Runtime runtime = Runtime.getRuntime();
            // 运行mount命令,获取命令的输出,得到系统中挂载的所有目录
            Process proc = runtime.exec("mount");
            InputStream is = proc.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            String line;
            BufferedReader br = new BufferedReader(isr);
            while ((line = br.readLine()) != null) {
                Log.d("", line);
                // 将常见的linux分区过滤掉
                // SdList.add(line);
                if (line.contains("secure"))
                    continue;
                if (line.contains("asec"))
                    continue;
                // 下面这些分区是我们需要的
                if (line.contains("vfat") || line.contains("fuse")
                        || line.contains("fat") || (line.contains("ntfs"))) {
                    // 将mount命令获取的列表分割,items[0]为设备名,items[1]为挂载路径
                    String items[] = line.split(" ");
                    if (items != null && items.length > 1) {
                        String path = items[2].toLowerCase(Locale.getDefault());
                        // 添加一些判断,确保是sd卡,如果是otg等挂载方式,可以具体分析并添加判断条件
                        if (path != null && path.contains("media_rw")) {
                            upath = path;
                        }
                    }
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return upath;
    }

猜你喜欢

转载自blog.csdn.net/weixin_38148680/article/details/80257685