2015-01-15 32 views
0

我从Android的皮棉警告:getExternalStorageDirectory()。getPath()何时返回“/ sdcard /”以外的内容?

Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead 

我会解决这个问题,但仍需要知道:

在其中(例如)设备是这是一个问题,其他什么(例如)你可以从这个电话中获得路径吗?如果这与特定设备无关,具体是什么或什么时候会发生?

在什么情况下没有/sdcard/我的应用程序可以写入的目录?

该应用程序所拥有的权利

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

在某些设备上它是/ storage/emulated/0/ – samgak

+1

它是设备之间的变量。有时它是sdcard0或sdcard1,就像这样。所以android建议不要硬编码。 – droidd

回答

2

你可以从这个呼吁得到了什么其他的(例如)路径?

部分地,它是制造商想要的。

部分地,它会根据运行您的应用程序的用户帐户而有所不同。请记住,几年以来(自Android 4.2发布以来),Android设备可以拥有多个用户帐户(从4.2开始的平板电脑,从5.0开始的手机)。每个用户都可以获得内部和外部存储的独特位置,并且不能保证这些文件系统路径指向哪个文件系统路径。

从硬件根目录到内部或外部存储。始终使用合适的方法获取根位置,然后使用适当的构造函数指向您想要的任何内容。

该应用程序所拥有的权利

由于在Android的无WRITE_INTERNAL_STORAGE许可,请删除它。

0

外部存储可能指向其他地方,

您可以定义并安装其他地方设备外部存储,

它配置选项,那你为什么有皮棉警告。

例如,如果设备支持外部SD卡,比外部SD卡(getExteranlStorage())将指向他(外部SD卡将挂载在/ nmt/sdcard#/),顶部保持内部SD卡空闲。

要清楚

的/ SD卡/ ==到/ mnt/SD卡[0] - >内部SD卡

其它SD卡就会安装在/ mnt/SD卡[1 ..]/- >外部SD卡

同时,也是设备的制造可以调用它,因为他希望(/ SD卡/只是一个惯例不是必须)

1

SD卡的路径是不同的Android厂商不同。所以我在自己的电话上与朋友的SD卡进行自己的研究。而结果:

索尼XPERIA X10i的(我的手机)

  • 的Android 2.3.3(姜饼),用于手机内部存储器
  • 路径:/mnt/sdcard/
  • not available
  • 为SD卡路径

Samsung Galaxy S3 Mini & Samsung Galaxy Young(给定的相同的结果)

  • 的Android 4.2.2(杰利贝恩),用于电话内部存储器
  • 路径:/storage/sdcard0/
  • 为SD卡路径:/storage/extSdCard/

OPPO(我不请记住她的手机类型是什么)

  • 的Android 4.2.2(豆形软糖),用于手机内部存储器
  • 路径:为SD卡/storage/sdcard0/external_sd/
  • 路径:/sdcard0/

我在一本书中写道的结果。所以我的建议,从来没有使用SD卡的路径hardcode。检查here知道你的SD卡的路径。

相关问题