2017-10-28 162 views
-1

我的問題是,當我點擊圖片,它顯示了保存的信息,但照片不會saved.I還允許使用外部存儲WRITE_EXTERNAL_STORAGE保存圖像

public void onClick(View v) { 
    if(isExternalStorageWriteable()) { 
     FileOutputStream outputStream; 
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
       R.drawable.img3); 
     File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "MyImage.png"); 
     try { 
       outputStream = new FileOutputStream(file); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); 
      outputStream.flush(); 
      outputStream.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Toast.makeText(this,"Pic Created : "+file,Toast.LENGTH_SHORT) 
       .show(); 
    } else { 
      Toast.makeText(this,"SDCard Not is Ready",Toast.LENGTH_SHORT) 
        .show(); } } 
public boolean isExternalStorageWriteable() 
{ 
    String state = Environment.getExternalStorageState(); 
    return Environment.MEDIA_MOUNTED.equals(state); } 

enter image description here

+0

你的'Toast'關於創建的圖片是錯誤的,即使發生錯誤也會顯示出來。檢查你的'logcat',可能會打印一些異常。用異常堆棧跟蹤更新你的問題 – pleft

回答

1

「我還允許在清單中訪問外部存儲器WRITE_EXTERNAL_STORAGE」,或者您在運行時詢問權限?

我想你只有在Android版本> = 23(6.0)的設備上有這個問題。 您應該檢查,如果你有這樣做之前在外部存儲寫的權限,如果你要問權限:

ContextCompat.checkSelfPermission(thisActivity, Manifest.permission. WRITE_EXTERNAL_STORAGE); 

ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); 

https://developer.android.com/training/permissions/requesting.html

如果授予權限檢查堆棧跟蹤,並張貼在這裏,可以肯定的是,「Pic Created」烤麪包應該留在塊末端的try-catch中,並且在catch塊內部,你必須啓動一個負面烤麪包。