我正在尝试使用以下代码(已在manifest.xml中设置权限android.permission.WRITE_EXTERNAL_STORAGE
)将文件写入SDCard。在执行nmea_file.createNewFile();
时,它使用Permission Denied
抛出异常。
有没有猜测为什么会发生这种情况?
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);
}
}
}
}
发布于 2011-12-08 20:49:43
添加到manifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
发布于 2011-05-29 06:09:13
您可能需要检查您是否有访问SD卡的权限。以下是如何在代码中完成此操作:
if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
Toast.makeText(this, "External SD card not mounted", Toast.LENGTH_LONG).show();
}
发布于 2012-04-18 01:50:45
请注意,uses sdk语句可能会影响您写入SD卡的能力(!)。
我的AndroidManifest.xml有以下内容:
<uses-sdk minSdkVersion="8"/>
即使我没有声明android.permission.WRITE_EXTERNAL_STORAGE,我也可以毫无问题地写入SD卡。
当我将uses sdk语句更改为:
<uses-sdk android:targetSdkVersion="9" minSdkVersion="8" />
我的所有SD卡写入都失败,权限被拒绝!假设应该声明android.permission.WRITE_EXTERNAL_STORAGE,但是为什么一条uses-sdk语句可以工作,而另一条语句不能呢?
https://stackoverflow.com/questions/4506612
复制相似问题