我从android lint收到警告:
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 :(得分:2)
您可以通过此次通话获得哪些其他(示例)路径?
部分地,它是制造商想要的任何东西。
部分地,它会根据运行您应用的用户帐户而有所不同。请记住,几年后(自Android 4.2发布以来),Android设备可以拥有多个用户帐户(平板电脑从4.2开始,手机从5.0开始)。每个用户都获得了内部和外部存储的不同位置,并且无法保证这些实际文件系统路径将指向这些路径。
永久硬编码根路径到内部或外部存储。始终使用适当的方法获取根位置,然后使用适当的File
构造函数指向您想要的任何内容。
该应用拥有权利
由于Android中没有WRITE_INTERNAL_STORAGE
权限,请将其删除。
答案 1 :(得分:1)
SD卡路径因不同的Android制造商而异。所以我在他们的手机上用朋友的SD卡进行自己的研究。结果:
Sony XPERIA X10i (我的手机)
not available
/mnt/sdcard/
三星Galaxy S3 Mini&amp;三星Galaxy Young (同样的结果)
/storage/sdcard0/
/storage/extSdCard/
OPPO (我不记得她的手机类型是什么)
/storage/sdcard0/external_sd/
/sdcard0/
我把结果写在一本书里。所以我的建议是,永远不要将hardcode
用于sdcard的路径。检查 here 以了解您的SD卡的路径。
答案 2 :(得分:0)
外部存储可能指向其他地方,
您可以将其他地方定义并安装为设备外部存储
它是一个配置选项,这就是为什么你有一个Lint警告。
例如,如果设备支持外部SD卡,则外部SD卡(getExteranlStorage())将指向他(外部sdcard将挂载在/ nmt / sdcard#/),顶部保持内部SD卡免费。
要说清楚
/ sdcard / == / mnt / sdcard [0] - &gt;内部SD卡
其他SD卡将安装在/mnt/sdcard [1..] / - &gt;外部SD卡
而且设备的制造也可以按照自己的意愿调用它(/ sdcard /只是一个必须具备的约定)