【问题标题】:Android: App exits when trying to save image to SD cardAndroid:尝试将图像保存到 SD 卡时应用程序退出
【发布时间】:2012-06-04 00:17:31
【问题描述】:

我正在尝试将图像保存到 SD 卡并为其添加了一些代码。但是在单击相机中的“确定”/复选标记后,我的应用程序退出了。我是否必须检查我要尝试的目录将其存储在存在中?我该怎么做?...!file.exists(){file.mkdirs}? ..在我的代码中,我尝试将其存储在每个 SD 卡中存在的 /Android 文件夹中。

           file = new File(Environment.getExternalStorageDirectory().getPath()
                 + "/Android/" + "bhe_app" + ".jpg");

    imageUri = Uri.fromFile(file);

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

        startActivityForResult(i, cameraData);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        iv.setImageBitmap(bmp);


    }
}

【问题讨论】:

    标签: android image save android-camera android-camera-intent


    【解决方案1】:

    在创建文件之前创建目录。

    boolean createdDirectory = new File(Environment.getExternalStorageDirectory().getPath() + "/directory1/directory2/directory3/").mkdirs();
    

    变量createdDirectory 将是

    当且仅当目录被创建时为真,连同所有 必要的父目录;否则为假

    您必须确保您的应用有权写入 SD 卡(检查您的 AndroidManifest.xml

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

    【讨论】:

      【解决方案2】:

      您是否在AndroidManifest.xml 中授予了Write_External_Storage 的权限,这对于将照片保存在sd 卡上很重要

      【讨论】:

      • 我刚刚做了..但是在我点击相机的“确定”/复选标记按钮后应用程序仍然退出..这是因为没有这样的目录吗?...以及如何检查目录是否存在并且它没有创建它..与 dir.mkdirs() 有什么关系?
      • 是什么错误,在Log中查看,尝试直接将图片存储在sd卡上,而不是放在目录中
      • 我正在查看谷歌的教程并对代码进行了一些更改。现在,图像已保存,但是一旦我点击相机的复选标记,应用程序就会退出。我做了一些更改如下: file = new File( Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "BHE App");mediaFile = newFile(file.getPath()+File.separator +"Image1.jpg"); if (!file.exists()) { 尝试 {file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } imageUri = Uri.fromFile(mediaFile);
      • 我用 imageUri 说: i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      相关资源
      最近更新 更多