1 问题
用takePhoto去照相的时候特么的一打开就报这个错误
2020-04-09 21:33:49.124 19016-19016/com.appsinnova.android.keepshare E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.appsinnova.android.keepshare, PID: 19016
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.keepshare/com.appsinnova.android.keepshare.account.TestActivity}: java.lang.reflect.UndeclaredThrowableException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3187)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3324)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2050)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
Caused by: java.lang.reflect.UndeclaredThrowableException
at $Proxy0.onPickFromCaptureWithCrop(Unknown Source)
at com.appsinnova.android.keepshare.account.TestActivity.onCreate(TestActivity.java:54)
at android.app.Activity.performCreate(Activity.java:7378)
at android.app.Activity.performCreate(Activity.java:7369)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3324)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2050)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy0.onPickFromCaptureWithCrop(Unknown Source)
at com.appsinnova.android.keepshare.account.TestActivity.onCreate(TestActivity.java:54)
at android.app.Activity.performCreate(Activity.java:7378)
at android.app.Activity.performCreate(Activity.java:7369)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3324)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2050)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/images/20200409_213349.jpg
at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:744)
at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418)
at com.jph.takephoto.uitl.TUriParse.getUriForFile(TUriParse.java:87)
at com.jph.takephoto.uitl.TUriParse.getTempUri(TUriParse.java:56)
at com.jph.takephoto.app.TakePhotoImpl.onPickFromCaptureWithCrop(TakePhotoImpl.java:380)
at java.lang.reflect.Method.invoke(Native Method)
at com.jph.takephoto.permission.TakePhotoInvocationHandler.invoke(TakePhotoInvocationHandler.java:39)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy0.onPickFromCaptureWithCrop(Unknown Source)
at com.appsinnova.android.keepshare.account.TestActivity.onCreate(TestActivity.java:54)
at android.app.Activity.performCreate(Activity.java:7378)
at android.app.Activity.performCreate(Activity.java:7369)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3324)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2050)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
关键信息:
Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/images/20200409_213349.jpg
2 解决办法
在file_paths.xml文件加入如下
<root-path name="root_path" path="."/>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-externalPath
name="external"
externalPath=".lock1hide" />
<root-path name="root_path" path="."/>
</paths>