Android相机错误无法提供结果ResultInfo

时间:2016-02-08 06:35:15

标签: android android-camera android-camera-intent

我正在尝试让我的相机为我的Android应用程序工作,但我不断收到以下错误

  

02-07 22:30:48.217 13197-13197 / com.example.romsm.lap E / AndroidRuntime:   致命异议:主要                                                                              java.lang.RuntimeException:传递结果失败   ResultInfo {who = null,request = 1,result = -1,data = Intent {   act = inline-data dat = content:// media / external / images / media / 8557(has   额外的)}}到活动   {com.example.romsm.lap / com.example.romsm.lap.TreeQuestionsActivity}:   显示java.lang.NullPointerException                                                                                  在android.app.ActivityThread.deliverResults(ActivityThread.java:3510)                                                                                  在   android.app.ActivityThread.handleSendResult(ActivityThread.java:3553)                                                                                  在android.app.ActivityThread.access $ 1200(ActivityThread.java:165)                                                                                  在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1374)                                                                                  在android.os.Handler.dispatchMessage(Handler.java:99)                                                                                  在android.os.Looper.loop(Looper.java:137)                                                                                  在android.app.ActivityThread.main(ActivityThread.java:5455)                                                                                  at java.lang.reflect.Method.invokeNative(Native Method)                                                                                  在java.lang.reflect.Method.invoke(Method.java:525)                                                                                  在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187)                                                                                  在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)                                                                                  在dalvik.system.NativeStart.main(本地方法)

我已经尝试过我可以在网上找到的所有东西,但似乎没有什么能解决它。 这是我的代码,我在那里做相机的东西。

btnPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                   // File file = new File(...);
                    startActivityForResult(takePictureIntent, ACTIVITY_START_CAMERA);
                   // takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                }
            }
        });



    }

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == ACTIVITY_START_CAMERA) {
            if (data != null && resultCode == RESULT_OK) {
                // Image captured and saved to file
                Bundle extras = data.getExtras();
                Bitmap imageBitmap = (Bitmap) extras.get("data");
                imageView.setImageBitmap(imageBitmap);
            } else {
                // User cancelled the image capture or
                // image capture failed, advise user

            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

1 个答案:

答案 0 :(得分:0)

这是我使相机工作的代码。你可以试试这个。

 private void activeTakePhoto() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,
                                    Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case REQUEST_IMAGE_CAPTURE:
                if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK & null != data) {

                Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
                //to generate random file name
                String fileName = "tempimg.jpg";

                try {
                    photo = (Bitmap) data.getExtras().get("data");
                    //captured image set in imageview
                    imageView.setImageBitmap(photo);
                } catch (Exception e) {
                    e.printStackTrace();
                }
        }
    }