我正在使用照片编辑器库,它将图像uri作为输入。我正在为用户提供相机选项。在EXTRA_OUTPUT
意图中,我给了uri文件,其中应该保存捕获的图像,然后我通过intent.setData()方法将相同的uri传递给照片编辑器SDK的活动。
所有使用Android API 23或更低版本的工作正常。正如我们在API 24或更高版本中所知,出于某些安全原因,我们无法直接在EXTRA_OUTPUT
中使用文件uri。在这种情况下我们必须使用FileProvider,我也做了同样的事情。我使用FileProvider并使用FileProvider的getUriForFile()
方法获取uri文件。我把这个uri放在相机意图的EXTRA_OUTPUT
中,并使用intent.setData()将它放在Photo editor SDK的活动意图中,但这次它给了我以下错误:
java.lang.IllegalArgumentException: column '_data' does not exist
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.IllegalArgumentException: column '_data' does not exist
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78)
at com.dsphotoeditor.sdk.activity.DsPhotoEditorActivity.a(Unknown Source)
at com.dsphotoeditor.sdk.activity.DsPhotoEditorActivity.a(Unknown Source)
at com.dsphotoeditor.sdk.activity.DsPhotoEditorActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:6010)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
我在谷歌搜索过但我没有得到任何建议或解决方案。是照片编辑器SDK的问题还是我在代码中的任何地方都出错了?为了简单起见,我将我的代码放在这里。
我使用Fileprovider获取uri并将其放入EXTRA_OUTPUT
相机意图中,如下所示:
val image = File(appFolderCheckandCreate(), "tmp.jpg")
fileUri = FileProvider.getUriForFile(mContext,mContext.getApplicationContext().getPackageName() + ".provider", image);
var cameraIntent: Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, CAMERA_INTENT_CODE)
我将Uri放入照片编辑器sdk的活动意图如下:
photoEditorIntent.setData(fileUri)