2012-02-19 65 views
1

我被卡住了。我将LinearLayout转换为位图,保存,然后通过电子邮件发送。我遇到的问题是我想设置文件名,以覆盖以前的文件名。主要目的是将LinearLayout作为图像发送。从我读到的,你必须先将它保存到SD卡。我很好,但我只想在任何时候都有一个保存的图像。我得到一个文件名称,其中包含一个随机的13位数字文件名称,例如(1329676773253.jpg)以下是代码。保存设置文件名.JPG

void image() { 

    llImage.setDrawingCacheEnabled(true); 
    test2 = Bitmap.createBitmap(llImage.getDrawingCache()); 
    ContentValues values = new ContentValues(); 
    values.put(Images.Media.TITLE, "001"); 
    values.put(Images.Media.DISPLAY_NAME, "ast.jpg"); 
    values.put(Images.Media.DATE_ADDED, System.currentTimeMillis()); 
    values.put(Images.Media.MIME_TYPE, "image/jpeg"); 

    Uri uri2 = getContentResolver().insert(
      Images.Media.EXTERNAL_CONTENT_URI, values); 
    try { 
     OutputStream outStream = getContentResolver() 
       .openOutputStream(uri2); 
     test2.compress(Bitmap.CompressFormat.PNG, 100, outStream); 

     outStream.flush(); 
     outStream.close(); 
     Log.d("done", "done"); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 



    final Intent emailIntent = new Intent(
      android.content.Intent.ACTION_SEND); 
    emailIntent.setType("text/html"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, ""); 
    emailIntent.putExtra(Intent.EXTRA_STREAM, uri2); 
    emailIntent.setType("image/png"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
      Html.fromHtml("" + finalEmail)); 
    startActivity(Intent.createChooser(emailIntent, "Email:")); 

} 
+0

如果你想有一个固定的名字,为什么不直接使用一个固定的名字吗?例如(/mnt/sdcard/myimage.jpg) – BitBank 2012-02-19 19:37:01

回答

0

你可以简单地写有FileOutputStream到文件:

FileOutputStream outStream = new FileOutputStream("filename.jpg"); 
+0

理论上会让它覆盖,但主要目的是将图像附加到电子邮件。那么我怎样称此为Uri呢? – 2012-02-19 21:05:42

+0

'Uri uri = Uri.fromFile(new File(“filename”));' – 2012-02-19 21:10:34

+0

我想你解决了我的问题......但它在哪里保存文件?在我能够在SD卡上找到它之前,现在我不能。 – 2012-02-19 21:24:08