我的问题是两部分:
context.getCacheDir()
is private to your app. You can t put something there and expect another app to be able to access it.
- I misunderstood what MIME type I should have been using. Even though I was sending email text, I really needed to specify
image/png
for the sake of my attachment.
此外,研究表明,将(可能较大的)图像放在主要记忆上不是一个好的想法,即使你将立即清理。
一旦我做这些事情,把我制作的图像写到SD卡上的一个公共场所,那就算是罚款。
因此,概览:
www.un.org/Depts/DGACM/index_spanish.htm 请求SD 文件 查阅你的明文<>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<>确保SD ∗∗∗∗
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
{
//Bail gracefully
}
www.un.org/Depts/DGACM/index_spanish.htm 制作SD卡的名录
File pngDir = new File(
Environment.getExternalStorageDirectory(),
//Loose convention inferred from app examples
"Android/data/com.somedomain.someapp/flotsam");
if (!pngDir.exists())
pngDir.mkdirs();
www.un.org/Depts/DGACM/index_spanish.htm 向该名录撰写你的文件,并捕获Uri
File pngFile = new File(pngDir, "jetsam.png");
//Save file encoded as PNG
Uri pngUri = Uri.fromFile(pngFile);
www.un.org/Depts/DGACM/index_spanish.htm 建立<条码> 参考标准
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/png"); //
intent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "someone@somewhere.com" });
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Portable Network Graphics");
intent.putExtra(android.content.Intent.EXTRA_CC, new String[] { "carbon@somewhere.com" });
intent.putExtra(Intent.EXTRA_TEXT, "Something textual");
intent.putExtra(Intent.EXTRA_STREAM, pngUri);
www.un.org/Depts/DGACM/index_spanish.htm 然后开始活动。
context.startActivity(Intent.createChooser(intent, "Something Pithy"));
然后确保你清理所有东西......
<><>Caveat 1
似乎有更多的人支持提供专门的SD卡片目录,但不是在我要求的SDK版本中提供地图。
<><>Caveat 2
这是最终为我工作的解决办法概览。 这不一定是一种“最佳做法”方法。
<><>Caveat 3
这确实意味着,申请必须安装SD卡,以便有图像附录,但我使用的是完全可以接受的。 你的里程可能有所不同。 如果无法拿到SD卡,我就向电子邮件发出一份友好照会,解释为何不能附上图像以及如何纠正这种情况。