【问题标题】:Android writing file with bad permissions具有错误权限的Android写入文件
【发布时间】:2015-03-06 19:34:02
【问题描述】:

当我将文件写入 sdcard 时,它会以 -rw-rw---- 权限和所有者为 root 写入文件。我遵循了文件写入权限的 android 指南,但它没有说明以 root 身份写入文件。我需要能够使用 android 文件管理器打开此文件,但由于我没有 root 权限,因此没有权限。 这是输出文件的代码:

 File file = getExternalStorageDirectory();

 File sim = new File(file, "Driving Sim App/");
 sim.getParentFile().mkdirs();
 sim = new File(sim, name+".csv");

 try {
     BufferedWriter bor = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(sim)));
     bor.write("This is a test");
     bor.close();
 } catch (FileNotFoundException e) {
     e.printStackTrace();
     return;
 } catch (IOException e) {
     e.printStackTrace();
 }

我的清单文件中也有这个:

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

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 您的文件权限似乎反映了所涉及的 fuse 守护程序的正常和正确行为。在外部存储上没有真正意义上的每个包文件的所有权,而是适当的 unix 组的成员身份(根据清单权限),这应该允许从中间权限集进行访问,在您的情况下是 rw-。更高版本中的 per-package 目录添加了权限综合作为额外的可能性。

标签: android android-file android-permissions


【解决方案1】:

您可能想尝试: File file = Environment.getExternalStorageDirectory();

【讨论】:

    【解决方案2】:

    解决您的问题的两个潜在方法。首先,确保您的路径格式正确。打印出 sim 的路径并确保它没有任何多余的斜线或缺少斜线。 这些都是有问题的:

    parent_dir//child_dir.csv
    parent_dirchild_dir.csv
    parent_dir/child_dir/.csv
    parent_dir/child_dir.csv/
    

    你真的想要这个:

    parent_dir/child_dir.csv
    

    我知道的另一个可能的问题是某些 Android 设备上的重新索引问题。这意味着在某些 Android 设备上,即使您成功写入文件,您也可能无法在存储中看到它们(这是假设您在尝试写入文件时没有遇到错误)。

    通过使用 MediaScannerConnection 对象重新索引来解决此问题。

    MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null,
            new MediaScannerConnection.OnScanCompletedListener() {
                public void onScanCompleted(String path, Uri uri) {
                    Log.i("ExternalStorage", "Scanned " + path + ":");
                    Log.i("ExternalStorage", "-> uri=" + uri);
                }
    });
    

    ^^当我遇到类似的问题时,我从另一篇帖子中得到了这个类似的问题: Can't write to sdcard even with permissions set and external storage in MEDIA_MOUNTED state

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2012-01-20
      • 2011-08-03
      • 2014-06-20
      • 1970-01-01
      • 2012-09-07
      • 2012-02-29
      相关资源
      最近更新 更多