@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)
文件路径似乎为空。您正在尝试使用纵隔存储data
列从content:/
URI获取文件。这可能起作用,也可能不起作用,正如Mark Murphy在《如何从URI消费内容》中所解释的那样。
获取内容的唯一可靠方法是使用ContentResolver.OpenInputStream()
然后,您可以在上载该流之前将其复制到文件中,也可以直接上载该流,如本OkHttp制作方法所述。
我试着让我的相机为我的android应用程序工作,但我一直得到以下错误 02-07 22:30:48.217 131 97-13197/com.example.romsm.lap E/AndroidRuntime:致命异常:main java.lang.RuntimeException:将结果ResultInfo{who=null,request=1,result=-1,data=intent{a
在这个问题上有人能帮我吗? 我在打印logcat。但我不能复制这一期。我的用户很少会遇到这个问题。 这是从我的用户的Logcat值复制的,他使用的是Android版本6.0.1 提前道谢。
我不能成功的屏幕录制,它开始录制ok,但当它停止应用程序崩溃 错误:
背景: 有两项活动 1x(主活动),1x(子活动-具有列表视图的活动) 主活动扩展了碎片活动,信息将在碎片中使用 单击主活动的菜单项时,子活动将打开 为ListView使用HashMap 我的目标: 单击项的HashMap值应发送回主活动,子活动(带有ListView)应关闭 问题: 我认为我犯了一个巨大的错误,但我无法解决它。 从onOptionsItemSelected和onActivityR
问题内容: 我真的很沮丧地解决了我的问题,我有一个使用相机的应用程序,当相机拍摄照片时,它将在活动中显示,当我不使用照片时,将在活动中显示,但是名称和路径文件未显示就像我想要的。我正在使用galaxy选项卡进行编译,我已经按照教程从此处,此处和此处解决了我的问题,但是我的应用程序仍然强制关闭并出错,这是我的代码: 活动结果方法: 这是我的logcat说的: 我真的希望有人可以帮助我解决我的问题,我
我想问一下如何将值从片段a传递到活动B,然后再传递回片段。我尝试使用bundle来传递值,但是它会给出错误的数据。 非常感谢。