尝试将文件保存到SD卡时权限被拒绝

时间:2013-04-10 22:01:04

标签: android android-sdcard

我试图将文本文件保存到SD卡但我得到了Eacess(权限定义)错误。我的代码如下:

      try {
            File myFile = new File(Environment.getExternalStorageDirectory().getPath() + "/myfile");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(text.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Done writing SD 'mysdfile.txt'",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }

我已经允许了`

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />`
在android清单

我一直在看其他一些与这个问题有关的帖子,但没有解决它。

我缺少什么?

更新我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.files"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />   
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.files.FilesActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

1 个答案:

答案 0 :(得分:2)

要将文件保存到外部存储,有助于拥有外部存储空间。 : - )

不幸的是,AVD Manager默认没有外部存储(即使我建议他们改变它)。因此,如果您使用的是模拟器,请仔细检查以确保填写了“SD卡”大小的值。

我通常会分配一些小的东西,比如32MB - 足以让你可以使用外部存储,而不是咀嚼一堆你的硬盘或减慢最初的AVD发布。当然,如果您计划测试需要更多外部存储空间的东西,请选择适合的值。