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"....