2012-02-19 41 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