2017-12-29 7 views
0

다른 앱과 사진을 공유 할 때 앱이 android.os.TransactionTooLargeException을 수신하는 경우가 있습니다. 코드는 그림 자체를 전달하는 것이 아니라 URI를 전달합니다. 첫 번째 충돌 후 문제없이 동일한 프로세스를 여러 번 반복 할 수 있습니다. android.os.TransactionTooLargeException 오류는 문제의 정확한 위치를 판별하기 위해 특정 적이 지 않습니다.다른 사용자와 사진을 공유하는 경우 android.os.TransactionTooLargeException 발생

이 오류를 추가로 디버깅 할 수있는 방법이 있습니까? 해결 방법은 무엇입니까?

도움을 주셔서 감사합니다.

private void sharePicture() { 

     BitmapDrawable draw = (BitmapDrawable) mIvPicture.getDrawable(); 
     Bitmap bitmap = draw.getBitmap(); 

     FileOutputStream outStream = null; 
     File sdCard = Environment.getExternalStorageDirectory(); 
     File dir = new File(sdCard.getAbsolutePath() + "/DogWalkTracker"); 
     dir.mkdirs(); 
     String fileName = String.format("%d.jpg", System.currentTimeMillis()); 
     File outFile = new File(dir, fileName); 

     try { 
      outStream = new FileOutputStream(outFile); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
      outStream.flush(); 
      outStream.close(); 
     } catch (Exception ex) { 
      Toast.makeText(mContext, R.string.msgErrorPicture3, Toast.LENGTH_LONG).show(); 
      return; 
     } 
    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    intent.setData(Uri.fromFile(outFile)); 
    getActivity().sendBroadcast(intent); 

    Intent shareIntent = new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(outFile)); 
    shareIntent.setType("image/jpeg"); 
    startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.msgSelectApp))); 

} 


12-29 12:59:21.779 15450-15450/br.com.cfb.dogwalktrackeruser E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 667052) 
    12-29 12:59:21.781 15450-15450/br.com.cfb.dogwalktrackeruser D/AndroidRuntime: Shutting down VM 
    12-29 12:59:21.786 15450-15450/br.com.cfb.dogwalktrackeruser E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: br.com.cfb.dogwalktrackeruser, PID: 15450 
                        java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 667052 bytes 
                         at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3776) 
                         at android.os.Handler.handleCallback(Handler.java:751) 
                         at android.os.Handler.dispatchMessage(Handler.java:95) 
                         at android.os.Looper.loop(Looper.java:154) 
                         at android.app.ActivityThread.main(ActivityThread.java:6123) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
                        Caused by: android.os.TransactionTooLargeException: data parcel size 667052 bytes 
                         at android.os.BinderProxy.transactNative(Native Method) 
                         at android.os.BinderProxy.transact(Binder.java:615) 
                         at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3700) 
                         at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3768) 
                         at android.os.Handler.handleCallback(Handler.java:751)  
                         at android.os.Handler.dispatchMessage(Handler.java:95)  
                         at android.os.Looper.loop(Looper.java:154)  
                         at android.app.ActivityThread.main(ActivityThread.java:6123)  
                         at java.lang.reflect.Method.invoke(Native Method)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)  
+0

스택 트레이스에서 너무 커서 저장된 인스턴스 상태 인 'Bundle'이있는 것처럼 느껴집니다. – CommonsWare

+0

안녕하세요. CommonsWare. 나는 앱을 테스트하고 오류가 onSaveInstanceState 이후에 발생했음을 확인 했으므로 조각을보고 그림과 기타 데이터를 전달한다는 것을 알았습니다. 따라서 활동이 완료되면 문제가 발생했습니다. 조각 데이터. 고맙습니다. – Carlos

답변

0

나는 응용 프로그램을 테스트하고 오류가 내가 게시 된 코드와 onSaveInstanceState 후 실행 후 발생 확인, 그래서 내가 조각에 통과 된 다른 응용 프로그램 예고를 시작했다 조각을 보았다 그림 및 기타 데이터.

이미지 조각 Uri에 전달 된 후 문제가 해결되었습니다.

관련 문제