TakePhoto icon indicating copy to clipboard operation
TakePhoto copied to clipboard

安卓7.0以上 java.lang.reflect.UndeclaredThrowableException的解决

Open taiji1 opened this issue 4 years ago • 2 comments

java.lang.reflect.UndeclaredThrowableException at android.app.ActivityThread.deliverResults(ActivityThread.java:4605) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1997) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7047) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876) Caused by: java.lang.reflect.UndeclaredThrowableException at $Proxy5.onActivityResult($Proxy5.java) at android.app.Activity.dispatchActivityResult(Activity.java:7583) at android.app.ActivityThread.deliverResults(ActivityThread.java:4598) ... 11 more Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Method.java) at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39) at java.lang.reflect.Proxy.invoke(Proxy.java:1006) ... 16 more Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference at com.jph.takephoto.uitl.TImageFiles.getMimeType(TImageFiles.java:133) at com.jph.takephoto.app.TakePhotoImpl.onCrop(TakePhotoImpl.java:275) at com.jph.takephoto.app.TakePhotoImpl.onActivityResult(TakePhotoImpl.java:153) ... 19 more java.lang.reflect.UndeclaredThrowableException at $Proxy5.onActivityResult($Proxy5.java) at android.app.Activity.dispatchActivityResult(Activity.java:7583) at android.app.ActivityThread.deliverResults(ActivityThread.java:4598) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1997) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7047) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Method.java) at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39) at java.lang.reflect.Proxy.invoke(Proxy.java:1006) ... 16 more Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference at com.jph.takephoto.uitl.TImageFiles.getMimeType(TImageFiles.java:133) at com.jph.takephoto.app.TakePhotoImpl.onCrop(TakePhotoImpl.java:275) at com.jph.takephoto.app.TakePhotoImpl.onActivityResult(TakePhotoImpl.java:153) ... 19 more java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Method.java) at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39) at java.lang.reflect.Proxy.invoke(Proxy.java:1006) at $Proxy5.onActivityResult($Proxy5.java) at android.app.Activity.dispatchActivityResult(Activity.java:7583) at android.app.ActivityThread.deliverResults(ActivityThread.java:4598) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1997) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7047) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference at com.jph.takephoto.uitl.TImageFiles.getMimeType(TImageFiles.java:133) at com.jph.takephoto.app.TakePhotoImpl.onCrop(TakePhotoImpl.java:275) at com.jph.takephoto.app.TakePhotoImpl.onActivityResult(TakePhotoImpl.java:153) ... 19 more java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference at com.jph.takephoto.uitl.TImageFiles.getMimeType(TImageFiles.java:133) at com.jph.takephoto.app.TakePhotoImpl.onCrop(TakePhotoImpl.java:275) at com.jph.takephoto.app.TakePhotoImpl.onActivityResult(TakePhotoImpl.java:153) at java.lang.reflect.Method.invoke(Method.java) at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39) at java.lang.reflect.Proxy.invoke(Proxy.java:1006) at $Proxy5.onActivityResult($Proxy5.java) at android.app.Activity.dispatchActivityResult(Activity.java:7583) at android.app.ActivityThread.deliverResults(ActivityThread.java:4598) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1997) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7047) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)

taiji1 avatar Mar 12 '20 08:03 taiji1

log 如上 ,解决此问题需要

将自定义TakePhotoActivity中 takePhoto.onPickFromDocumentsWithCrop(imageUri, getCropOptions()); 替换成takePhoto.onPickFromGalleryWithCrop(imageUri, getCropOptions());

taiji1 avatar Mar 12 '20 08:03 taiji1

单纯的修改provide 是解决不了问题的 真正造成crash的问题是 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference at com.jph.takephoto.uitl.TImageFiles.getMimeType(TImageFiles.java:133) at com.jph.takephoto.app.TakePhotoImpl.onCrop(TakePhotoImpl.java:275) at com.jph.takephoto.app.TakePhotoImpl.onActivityResult(TakePhotoImpl.java:153)

taiji1 avatar Mar 12 '20 08:03 taiji1