代码之家  ›  专栏  ›  技术社区  ›  Janusz Daniel Rindt

Android 1.5和Android 1.6之间的大容量存储API有哪些变化

  •  2
  • Janusz Daniel Rindt  · 技术社区  · 15 年前

    不久前我写了一些代码把图像保存在SD卡上。现在我将targetSDKVersion添加到我的清单中,现在我的文件保存代码停止工作。

    我可以通过从我的清单中删除targetSdkVersion来复制它,因为我的应用程序不会向SD卡写入任何内容。

    安卓1.5和1.6之间是否有API更改,阻止我写入SD卡?

    File imageDirectory = new File(Environment.getExternalStorageDirectory()
                     .getAbsolutePath()
                     + File.separator
                     + FOLDER_NAME);
    
    Log.d(ImageSaver.class.getSimpleName(), "SD Card status: "
                + Environment.getExternalStorageState());
    
    if (!imageDirectory.exists()) {
       boolean created = imageDirectory.mkdir();
       Log.d(ImageSaver.class.getSimpleName(), "Created image directory "
                    + imageDirectory + " " + created);
    }
    File imageFile = new File(imageDirectory.getAbsolutePath() + File.separator
                        + name + nameSuffix + FILE_ENDING);
    
    bitmap.compress(Bitmap.CompressFormat.PNG, FULL_QUALITY,
             new FileOutputStream(imageFile));
    

    <uses-sdk
       android:minSdkVersion="3"
       android:targetSdkVersion="8" />
    

    我得到以下例外:

    错误/ImageSaver(8672):找不到文件 09-27 11:35:58.689: java.io.FileNotFoundException异常: /sdcard/FOLDER/1285580158662.png

    删除targetSdkVersion可以使其在所有平台上再次工作。

    如何使代码与targetSdkVersion集一起运行?

    1 回复  |  直到 15 年前
        1
  •  1
  •   mreichelt    15 年前

    你必须添加权限 WRITE_EXTERNAL_STORAGE

    推荐文章