Android ImageView SDCard

时间:2011-12-24 01:44:28

标签: android imageview

我正在尝试将/mnt/sdcard/image.jpg中的图像文件读入我的ImageView。这是我的代码:

Bitmap bmp = BitmapFactory.decodeFile("/mnt/sdcard/image.jpg");     
webImage.setImageBitmap(bmp);

我已经写了外部存储权限。

我的代码说bmp为空,即使图像位于根目录中(我转到I Drive并且image.jpg就在那里。)

我做错了什么?

5 个答案:

答案 0 :(得分:2)

可能有两种情况:

1)如果您的图像位于SD卡的根文件夹中,则可以通过

访问它
 Environment.getExternalStorageDirectory().toString + File.separator + "yourimage.jpg"

2)但我想你的情况是在/ mnt / sdcard / external_sd中你的设备的存储卡在这种情况下试试这个:

Environment.getExternalStorageDirectory().toString + File.separator + "external_sd"  + File.separator + "yourimage.jpg"

BitmapFactory.decodeFile("Replace Here...")

中将您的上述两条路径替换为您的路径

答案 1 :(得分:1)

我怀疑带有图像的卡未安装在/ mnt / sdcard /.

由于您使用的是摩托罗拉设备,因此您可能有两个大容量存储设备(请参阅this list,如果您的设备在那里,就是这种情况)。在这种情况下,您必须使用Motorola "External" Storage API来获取第二个大容量存储的路径。

一般情况下:您不能依赖这样的SD卡的硬编码路径。安装点因设备而异。或者可能以不同的名称命名,某些设备可能有闪存而不是卡,依此类推。简而言之:在您的手机上有效的功能打破其他人。您可以通过调用Environment.getExternalStorageDirectory()来读取主要外部存储的可靠路径。

答案 2 :(得分:1)

谢谢,我设法解决了。这是我发现的:

  1. 我去了项目>清洁
  2. 我将手机与电脑断开了。连接后,SD已安装,您无法查看数据。
  3. 图片名称不能以数字开头。我使用的是SDK 7.
  4. 我查看了LogCat并没有收到任何错误,但是,保存到其他系统区域(例如/Android/Data/)会导致FileNotFoundException - 权限错误。

    File destination = new File(Environment.getExternalStorageDirectory(), "image" + 
    DateHelper.getTodaysDate() + "_" + DateHelper.getCurrentTime() + ".jpg");
    
    private View.OnClickListener listener = new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Add extra to save full-image somewhere
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
      Uri.fromFile(destination));
        startActivityForResult(intent, REQUEST_IMAGE);
      }
    };
    

答案 3 :(得分:0)

请检查LogCat以获取更多信息。

我的猜测是你有三星设备。三星往往有一个external_sd文件夹,因此您可能已将其添加到错误的SD卡中,因为三星通常有内部和外部。

答案 4 :(得分:0)

你的代码完全没问题。只需检查您是否正在编写正确的SD卡路径。可能因为这个原因你得到了空位图。

并且“写入外部存储权限”用于写入您的SD卡而不是用于从SD卡读取。明确这个概念。