<< Android-Note
FAILED BINDER TRANSACTION の対処法
インテントからアクティビティなどを起動しようとするとたまに次のようなエラーが出ることがあります。
!!! FAILED BINDER TRANSACTION !!!
これが発生するのは次のようにインテントに画像を渡したときです。
Intent intent = new Intent(this, MyActivity.class); intent.putExtra("BITMAP", bitmap); ///bitmapが画像のBitmap startActivity(inetnt);
画像サイズが小さければ問題ありませんが、たとえばカメラから撮影した画像を渡したい場合などはサイズが大きすぎてこのエラーが起こってしまいます。
なのでなるべく画像自体は渡さずに次のように一旦画像をアプリ領域に保存してそのパスを渡した方が良いです。
String timeStamp = new SimpleDateFormat( "yyyy_MM_dd_hh_mm_ss").format(Calendar.getInstance()); String imageName = timeStamp + ".png"; File imageFile(getFilesDir(), imageName); FileOutputStream out; try { out = new FileOutputStream(imageFile); bitmap.compress(Bitmap.CompressFormat.PNG, 0, out); ///画像をアプリの内部領域に保存 } catch (FileNotFoundException e) { e.printStackTrace(); } Intent inetnt = new Intent(this, MyActivity.class); intent.putExtra("BITMAP", imageFile.getAbsolutePath()); ///画像のパスだけ渡す。 startActivity(intent);
こうすればどんなに画像サイズが大きくても問題ありません。
© Kaz