将图像保存到Android内部存储器,然后使用Intent作为电子邮件发送

时间:2012-03-26 14:16:56

标签: android image android-intent storage internal

我写了一个使用Environment.getExternalStoragePublicDirectory的应用程序( Environment.DIRECTORY_PICTURES)找到要存储图像的文件夹。然后我将jpg写入该文件夹,然后使用以下代码允许用户通过电子邮件,短信,Facebook ...或他们的手机设置的任何应用程序。

  Intent i = new Intent(Intent.ACTION_SEND); 
  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  i.setType("image/jpg");   
  File shareImg =  new File(fileName);
  i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(shareImg)); 
  startActivity(i);  

此代码在我测试的设备上正常工作。现在我发现没有SD卡的用户无法使用此代码。所以我决定尝试将图像写入内存。我能够将图像写入我的apps文件夹并将访问权限设置为Context.MODE_WORLD_READABLE,但是当我触发意图时,GMail,SMS或任何其他地图只会给我一条消息,说明他们无法附加图像。我认为问题可能是图像不在设备的实际“图片”文件夹中,但我找不到相当于Environment.getExternalStoragePublicDirectory的路由( Environment.DIRECTORY_PICTURES)用于内部存储。有没有其他人能够做到这样的事情?

1 个答案:

答案 0 :(得分:1)

我可以通过更改要使用的代码来解决此问题:

getExternalFilesDir(Environment.DIRECTORY_PICTURES)

而不是:

Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES)