【问题标题】:Can't access external sdcard in Android application无法在 Android 应用程序中访问外部 SD 卡
【发布时间】:2017-04-27 13:17:44
【问题描述】:

我正在尝试在我的 android 设备的外部存储 (sdcard) 中创建一个文件,并在该文件中执行读写操作。但我无法通过我的应用程序访问 sdcard。

我正在使用安卓棉花糖。

我在我的清单中给予许可:

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

当我使用Environment.getExternalStorageDirectory() 时,它会给我/storage/emulated/0 路径,我可以在其中成功读写。

但我想在安装在/storage/6161-3432 的外部 SD 卡中执行读写操作。而且我无法执行这样的操作。

我也尝试使用可以打开文件并在特定路径中执行操作的 JNI 代码。在这里我也可以访问我的/storage/emulated/0 路径,但不能访问我的 sdcard 路径/storage/6161-3432

那么如何使用我的应用程序访问外部 SD 卡?

【问题讨论】:

  • 您用于测试应用程序的操作系统版本是什么?如果您的模拟器/设备的操作系统大于 23>=,那么您必须动态分配权限。
  • assign the permission dynamically。没有什么可分配的。您需要代码来要求应用的用户确认权限。
  • i want to perform read and write in my external sdcard。如果您使用其中一个答案,您将只能在 sd 卡的特定目录中读写。对于卡片的其余部分,您只能阅读。无需权限。
  • 我在这里有一个更新,我使用运行时权限进行外部存储,但我无法通过我的应用程序在 SD 卡内创建任何文件/文件夹。当我为我的 SD 卡使用硬代码路径时,似乎应用程序可以读取 SD 卡路径但无法创建新文件。我可以通过adb shell 创建文件/文件夹。所以我不知道为什么我不能从我的应用程序创建文件。

标签: android file-io java-native-interface android-6.0-marshmallow


【解决方案1】:

使用以下代码,它将为您提供手机中所有可能的存储选项的列表:--

  File[] filesDirectory = context.getExternalFilesDirs(name);

【讨论】:

  • 感谢您的回复。我尝试了你的方法,但 File[] filesDirectory = context.getExternalFilesDirs(name); 在我的 Android Studio 中不起作用。所以我使用File[] filesDirectory = getBaseContext().getExternalFilesDirs("/storage/XXXX-XXXX"); for (int i = 0; i &lt; filesDirectory.length; i++) { Log.d(TAG, "FileName:" + filesDirectory[i].getName()); }。但我无法获取我的 SD 卡路径。
  • 您正在测试哪个 Android 版本。
  • 或尝试使用 File[] Dirs = ContextCompat.getExternalFilesDirs(MyApp.GetContext(), null);
  • 嘿,非常感谢,我可以使用您的建议写入 sd 卡。它让我写入/storage/xxxx-xxxx/Android/data/&lt;my.package&gt;/files/ 路径。这里有一个疑问,我们可以像 SD 卡中的任何地方一样在 App 目录之外写入。
  • 使用您的 File[] filesDirectory = context.getExternalFilesDirs(null);File[] Dirs = ContextCompat.getExternalFilesDirs(this, null);
猜你喜欢
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多