访问Android SD卡

时间:2013-03-14 03:10:02

标签: android cordova file-io

我正在尝试将我当前的webview保存在android的缓存中(我被告知mnt / sdcard)但无论是使用文件资源管理器还是尝试在代码中写入,我都会在我的avd模拟器上收到此错误:< / p>

java.io.FileNotFoundException: /mnt/sdcard/imageFolder/page.jpg: open failed: EACCES (Permission denied)

我还尝试先创建目录,但mkdir()函数返回false。  我的清单中有权限行:

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

这是我的代码:

public class screenCap extends DroidGap {

 private WebView myAppView;
    private DroidGap myGap;


 public screenCap(DroidGap gap, WebView view)
    {
     myAppView = view;
        myGap = gap;
    }   

//Captures the current webview and saves it as a jpeg so it can be loaded into
//the page flip html plugin
public void captureScreen(){

    myAppView.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(500, 500,  Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap); 
    myAppView.draw(canvas);

    //Create a directory to hold the temporary image
    File f =    new File(android.os.Environment.getExternalStorageDirectory()+"/imageFolder/"+ "page.jpg");

    if (!f.getParentFile().exists());
    {
        f.getParentFile().mkdir();
        Log.d("DIRECTORY MADE!","!!!");
    }

    try {
        myAppView.getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(f));
    } catch (Exception e) {
        Log.e("Error--------->", e.toString());
    }       
}   

}

2 个答案:

答案 0 :(得分:1)

这可能是因为您的AVD在创建时可能没有SD卡。

选择您的Virtual Device -> Edit -> Check SD Card field

如果为空,请在那里输入尺寸。然后重新运行您的应用程序。

答案 1 :(得分:0)

f.getParentFile()。exists()返回false(我认为在第一次运行时是预期的)f.getParentFile()。mkdir();我有2gb的avd经理设置的SD卡。我没有尝试将其保存到我的一个电脑文件夹,这是一个选项。