2016-10-05 1 views
0

私は提供されたイメージにユーザーが書き込んでギャラリーに保存することを可能にする本当にシンプルなアプリケーションを作ろうとしています。そして私は以下のコードを試しました。そしてそれはエラーを引き起こし、画像を保存することができません。私はマシュマロを信じイメージビューイメージをギャラリーに保存できません。(eglSurfaceAttribは実装されていません)..(アンドロイド)

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 


switch(item.getItemId()){ 
    case R.id.savebutton: 
      Bitmap bitmap = ((BitmapDrawable)imagecp.getDrawable()).getBitmap(); 


      saveBitmap(bitmap); 

    default: 
     return super.onOptionsItemSelected(item); 


} 

public void saveBitmap(Bitmap bmp) { 
    String _time = ""; 
    Calendar cal = Calendar.getInstance(); 
    int millisecond = cal.get(Calendar.MILLISECOND); 
    int second = cal.get(Calendar.SECOND); 
    int minute = cal.get(Calendar.MINUTE); 
    int hourofday = cal.get(Calendar.HOUR_OF_DAY); 
    _time = "image_" + hourofday + "" + minute + "" + second + "" 
      + millisecond + ".png"; 
    String file_path = Environment.getExternalStorageDirectory() 
      .getAbsolutePath(); 
    try { 
     File dir = new File(file_path); 
     if (!dir.exists()) 
      dir.mkdirs(); 
     File file = new File(dir, _time); 
     FileOutputStream fOut = new FileOutputStream(file); 
     bmp.compress(Bitmap.CompressFormat.PNG, 90, fOut); 
     fOut.flush(); 
     fOut.close(); 
     Toast.makeText(getApplicationContext(), 
       "Image has been saved in Couponmaker folder", 
       Toast.LENGTH_LONG).show(); 
    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(), 
       "saving failed", 
       Toast.LENGTH_LONG).show(); 
     Log.e("error in saving image", e.getMessage()); 
    } 
} 

とエラーメッセージ

E/error in saving image﹕ /storage/0C11-3814/image_162259256.png: open failed: EACCES (Permission denied) 
W/EGL_emulation﹕ eglSurfaceAttrib not implemented 
W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xad78df60, error=EGL_SUCCESS 
E/Surface﹕ getSlotFromBufferLocked: unknown buffer: 0xab7dd67 W/art﹕ Suspending all threads took: 13.866ms 

xmlファイル

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<application 
    android:allowBackup="true".... 

答えて

0

、外部デバイスディレクトリは、SDカードのディレクトリです。私はSDカードに書き込もうとしていたが失敗した。彼らはそれを許可しないので(私はどこかを読んだが、私は忘れてしまったのでここにリンクを追加することはできない)。ギャラリーは必ずしも外部ストレージから画像を読み取るわけではありません。この回答に目を通して、問題を解決して解決できるかもしれません:How to save image in android gallery

関連する問題