2013-09-27 63 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" /> 
相关问题