gpt4 book ai didi

android - OnActivityResult Activity 错误 : Failure delivering result ResultInfo

转载 作者:太空狗 更新时间:2023-10-29 15:25:20 25 4
gpt4 key购买 nike

error : Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:28362 flg=0x1 }} to activity {com.projectbox.uploadfile/com.projectbox.uploadfile.MainActivity}: java.lang.NullPo

  @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {
android.net.Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
android.database.Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor == null)
return;

cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();

File file = new File(filePath);

RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("banner", file.getName(), reqFile);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), "banner");

Log.d("THIS", data.getData().getPath());

retrofit2.Call<okhttp3.ResponseBody> req = service.postImage(body, name);
req.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("FFF", t.getMessage());
t.printStackTrace();
}
});
}
}

错误栈:

Process: com.projectbox.uploadfile, PID: 17822
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:28362 flg=0x1 }} to activity {com.projectbox.uploadfile/com.projectbox.uploadfile.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:4220)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4263)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1601)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:262)
at com.projectbox.uploadfile.MainActivity.onActivityResult(MainActivity.java:110)
at android.app.Activity.dispatchActivityResult(Activity.java:7025)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4216)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4263) 
at android.app.ActivityThread.-wrap20(ActivityThread.java) 

最佳答案

似乎文件路径为空。您正在尝试使用 mediastore DATA 列从 content:// URI 获取文件。正如 Mark Murphy 在 How to Consume Content From a Uri 中所解释的那样,这可能有效也可能无效。 .

获取内容的唯一可靠方法是使用 ContentResolver.openInputStream()

然后,您可以在上传之前将流复制到文件中,或者按照此 OkHttp recipe 中的说明直接上传流。 .

关于android - OnActivityResult Activity 错误 : Failure delivering result ResultInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48473186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com