gpt4 book ai didi

android - 相机结果代码和 RESULT_OK 不相等,仅在 nexus 5( Lollipop )中相机 Intent 后应用程序崩溃

转载 作者:行者123 更新时间:2023-11-29 19:58:29 25 4
gpt4 key购买 nike

同样的代码在其他设备上运行起来非常棒,但在 nexus 5(操作系统版本 5.1.1)中我无法运行它。

当我在 Nexus 5 中运行以下代码时,我得到 NullPointerException,resultCode=0 的值和 RESULT_OK=-1 的值,因此我的 if getActivityForResult 中的条件不运行。

而在其他设备(其他型号,如三星、htc 等)中,相同的代码毫无异常(exception)地运行起来就像一个魅力,resultCode=-1RESULT_OK=-1< 的值/strong>,两个值相同,因此 if 条件运行,因此程序的其余部分运行。

Java 代码mainActivity.java

public void callCamera() {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

// start the image capture Intent
startActivityForResult(intent, 100);
Log.i("hello", "callCamera");
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Log.i("hello", "" + requestCode);
Log.i("hello", "" + resultCode);
Log.i("hello", "" + this.RESULT_OK);


if (requestCode == 100 && resultCode == RESULT_OK) {
// fileUri=data.getExtras().get("data");
photo = (Bitmap) data.getExtras().get("data");

//*selectedImage = data.getData();
//photo = (Bitmap) data.getExtras().get("data");
Log.i("hello","onActivityResult");
uploadImage();
}
}

以 NEXUS 5 为例的 LOGCAT

FATAL EXCEPTION: main Process: com.google.android.GoogleCamera, PID: 24887 

java.lang.NullPointerException at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)
at com.google.common.base.Optional.of(Optional.java:84)
at com.android.camera.captureintent.state.StateSavingPicture.onEnter(StateSavingPicture.java:77)
at com.android.camera.captureintent.stateful.StateMachineImpl.jumpToState(StateMachineImpl.java:62)
at com.android.camera.captureintent.stateful.StateMachineImpl.processEvent(StateMachineImpl.java:110)
at com.android.camera.captureintent.state.StateOpeningCamera$9.onClick(StateOpeningCamera.java:307)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

最佳答案

从 callCamera() 方法中删除 intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 行,这将修复崩溃。就像您从 onActivityResult() Intent 获取 uri 一样,该 Intent 会将数据接收为 null,因为您在启动相机 Intent 时在 Intent 中放置了一个额外的 uri 值,这定义了您已经有一个文件 uri对于您的相机图像,并且您不希望 onActivityResult() 中的数据 Intent ,我还建议您删除 callCamera() 方法中使用的 fileuri 变量,因为它没有用。

因此您的 callCamera 方法应该如下所示:

public void callCamera() {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 100);
}

关于android - 相机结果代码和 RESULT_OK 不相等,仅在 nexus 5( Lollipop )中相机 Intent 后应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497336/

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