2013-09-27 64 views
-1

我收到了一個應用程序,您可以在上面簽名。我在保存圖像時遇到問題。我期望該文件被保存在SD卡/簽名,因爲這是我在strings.xml中指定的文件夾和該文件夾被創建。但相反,它將圖像保存到DCIM /相機文件夾,而不是保存在SD卡/簽名文件夾中。Android將圖像保存在SD卡/簽名中,而不是在DCIM /相機中

我已經閱讀過有關從DCIM文件夾中刪除圖像的問題,所以這不成問題。但我真的並欣賞,如果有人能告訴我爲什麼圖像中沒有SD /簽名節約

在的onCreate發生這種情況(外部DIR就像StoreSignature名稱的文件夾來存儲圖片):

tempDir = Environment.getExternalStorageDirectory() + "/" + getResources().getString(R.string.external_dir) + "/"; 
    ContextWrapper cw = new ContextWrapper(getApplicationContext()); 
    File directory = cw.getDir(getResources().getString(R.string.external_dir), Context.MODE_PRIVATE); 

這是保存方法:

mGetSign.setOnClickListener(new OnClickListener() 
    {   
     public void onClick(View v) 
     { 
      Log.v("log_tag", "Panel Saved"); 
      boolean error = captureSignature(); 
      if(!error){ 
       mView.setDrawingCacheEnabled(true); 
       mSignature.save(mView); 
       Bundle b = new Bundle(); 

       String status = "done"; 
       File path = mypath; 
       Log.i("info4", path.toString()); 
       String[] arr={status, path.toString()}; 
       b.putStringArray("status", arr); 
       Log.i("info5", arr.toString()); 
       Intent intent = new Intent(); 
       intent.putExtras(b); 
       setResult(RESULT_OK,intent); 
       finish(); 
      } 
     } 
    }); 

最後這正是準備的文件夾(不知道這是否曾與做的是)

private boolean prepareDirectory() 
{ 
    try 
    { 
     if (makedirs()) 
     { 
      return true; 
     } else { 
      return false; 
     } 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
     Toast.makeText(this, "Kan het file systeem niet vinden.. Zit de SD-kaart er goed in?", 1000).show(); 
     return false; 
    } 
} 

/** 
* Creates a directory 
* 
* @return whether the directory is created or not 
*/ 
private boolean makedirs() 
{ 
    File tempdir = new File(tempDir); 
    if (!tempdir.exists()) 
     tempdir.mkdirs(); 

    if (tempdir.isDirectory()) 
    { 
     File[] files = tempdir.listFiles(); 
     for (File file : files) 
     { 
      if (!file.delete()) 
      { 
       System.out.println("Deleten is mislukt " + file); 
      } 
     } 
    } 
    return (tempdir.isDirectory()); 
} 

的strings.xml(特徵值)

<string name="cancel">Annuleren</string> 
<string name="clear">Opnieuw</string> 
<string name="save">Opslaan</string> 

<string name="naam">Naam</string> 
<string name="external_dir">Handtekening</string> 
<string name="input"></string> 
<string name="title_activity_signature">Handtekening</string> 

是否有任何人誰看到我在做什麼錯?

在此先感謝!

+0

你能顯示你的字符串XML? – andy256

+0

ofcourse,我現在添加它。只有簽名部分才能做到這一點?因爲我的strings.xml有點大。 – GeertG

+1

使用下面的鏈接。這將解決您的問題 [Android的文件存儲到外部存儲設備] [1] [1]:http://stackoverflow.com/questions/7887078/android-saving-file-to-外部存儲 – Ameer

回答

0

試試這個代碼:

private void SaveIamge(Bitmap finalBitmap) { 

     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/saved_images");  
     myDir.mkdirs(); 
     Random generator = new Random(); 
     int n = 10000; 
     n = generator.nextInt(n); 
     String fname = "Image-"+ n +".jpg"; 
     File file = new File (myDir, fname); 
     if (file.exists()) file.delete(); 
     try { 
       FileOutputStream out = new FileOutputStream(file); 
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
       out.flush(); 
       out.close(); 

     } catch (Exception e) { 
       e.printStackTrace(); 
     } 
} 

也把權限體現

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
相關問題