Android SD卡写入,权限被拒绝
我正在尝试使用下面的代码(已在manifest.xml中设置权限android.permission.WRITE_EXTERNAL_STORAGE
)向SDCard写入文件。 一旦执行nmea_file.createNewFile();
它会抛出异常与Permission Denied
。Android SD卡写入,权限被拒绝
任何猜测为什么会发生这种情况?
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
Log.d(TAG, "Sdcard was not mounted !!");
}
else
{
File nmea_file;
File root = Environment.getExternalStorageDirectory();
FileWriter nmea_writer = null;
try {
nmea_file = new File(root,"NMEA.txt");
if(!nmea_file.exists()) {
Log.w(TAG, "File Doesn't Exists!");
nmea_file.createNewFile();
}
nmea_writer = new FileWriter(nmea_file);
nmea_writer.append(nmea);
nmea_writer.flush();
}
catch (IOException e)
{
Log.w(TAG, "Unable to write", e);
}
finally
{
if (nmea_writer != null)
{
try
{
nmea_writer.close();
}
catch (IOException e)
{
Log.w(TAG, "Exception closing file", e);
}
}
}
}
您可能想检查是否有权访问SDCARD。这里是你如何能做到这在代码:(!)
if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
Toast.makeText(this, "External SD card not mounted", Toast.LENGTH_LONG).show();
}
不错的建议人.. – 2012-02-06 12:18:09
添加到manifest.xml中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
要知道,你的用途-SDK语句可以影响你写SD卡的能力。
我的AndroidManifest.xml有以下几点:
<uses-sdk minSdkVersion="8"/>
而且我可以写SD卡,甚至没有,虽然我还没有宣布android.permission.WRITE_EXTERNAL_STORAGE任何问题。
当我改变了我的用途-SDK声明:
<uses-sdk android:targetSdkVersion="9" minSdkVersion="8" />
我所有的SD卡的写入失败,拒绝许可!授予android.permission.WRITE_EXTERNAL_STORAGE应该已经声明,但为什么有一个使用sdk声明它的工作,而另一个它没有?
检查SD卡是否为安装或者如果您正在检入仿真器。另外不要在创建模拟器的时候提供一些sdcard的大小。然后,您需要在清单中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
。
张贴您的logcat – Falmarri 2010-12-22 06:07:19
您是否使用sharedUerId系统? – 2012-05-10 11:23:04