【问题标题】:Android ACTION_IMAGE_CAPTURE Failure delivering result runtime exceptionAndroid ACTION_IMAGE_CAPTURE 传递结果运行时异常失败
【发布时间】:2011-11-12 13:00:31
【问题描述】:

我正在尝试在我的应用程序中拍照并获取图像路径。我使用 ACTION_IMAGE_CAPTURE 拍照并成功获取图像路径,但我也得到运行时异常。这是我的代码:

启动相机意图:

public void openDeviceCam() {

    // Setting parameters to camera intent
    String fileName = String.valueOf(System.currentTimeMillis()) + ".jpg";

    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, fileName);
    mCapturedImageURI = getContentResolver().insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

    Intent cameraIntent = new Intent(
            android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

}

从相机活动中获取结果:

// Returns after photo taken by phone
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if ((resultCode == RESULT_OK) && (requestCode == CAMERA_PIC_REQUEST)) {

        DataHandler handler = DataHandler.getInstance();
        // Photo taken
        imageCount++;
        handleUICompanents();

        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(mCapturedImageURI, projection, null,
                null, null);
        int column_index_data = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String capturedImageFilePath = cursor.getString(column_index_data);
        // Getting path datas to memory
        Log.v("captured image path", capturedImageFilePath);
        handler.setImagePathsToList(capturedImageFilePath);
        ConnectionHandler connectionHandler = new ConnectionHandler();

        // Calculate passed time during post
        long startSec = System.currentTimeMillis();

        // Reques 2
        StringBuilder strBuild = new StringBuilder();
        strBuild.append(UrlConstants.swfUrl)
                .append(UrlConstants.swfUrlParamsUploadType)
                .append("image_").append(handler.getSite()).append("_")
                .append(handler.getDomain());
        String respDataToImage = connectionHandler.postImageAsData(
                strBuild.toString(), handler.getImagePath());

        handler.setUpSwfUploadResponseParams(respDataToImage);

        long finishSec = System.currentTimeMillis();

        // Request 3
        strBuild = new StringBuilder();
        strBuild.append(UrlConstants.savePhotoUrl)
                .append(UrlConstants.savePhotoUrlParamsSt)
                .append(handler.getSt()).append("&")
                .append(UrlConstants.savePhotoUrlParamsAlbum)
                .append(handler.getPath()).append("&")
                .append(UrlConstants.savePhotoUrlParamsUploadedPhotoHash)
                .append(handler.getUploadKey()).append("&")
                .append(UrlConstants.savePhotoUrlParamsCdnDomain)
                .append(UrlConstants.cdnDomain).append("&")
                .append(UrlConstants.savePhotoUrlParamsAppId)
                .append(handler.getSite()).append("&")
                .append(UrlConstants.savePhotoUrlParamsNetmeraDomain)
                .append(handler.getDomain()).append("&")
                .append(UrlConstants.savePhotoUrlParamsViewerId)
                .append(handler.getOpensocialViewerId()).append("&");

        connectionHandler.getData(strBuild.toString(), null);

        Log.v("passed time", String.valueOf(finishSec - startSec));
        Log.v("upload path", handler.getPath());

        // Delete temp image path
        // deleteTempImages();

    }
}

这是我的 logcat 错误输出:

11-12 14:43:10.469: ERROR/AndroidRuntime(20850): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1337, result=-1, data=null} to activity {com.inomera.ttmobilerehber/com.inomera.ttmobilerehber.TTMobileRehberActivity}: java.lang.NullPointerException: println needs a message
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2536)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:2578)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread.access$2000(ActivityThread.java:117)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:965)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.os.Looper.loop(Looper.java:123)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread.main(ActivityThread.java:3687)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at java.lang.reflect.Method.invokeNative(Native Method)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at java.lang.reflect.Method.invoke(Method.java:507)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at dalvik.system.NativeStart.main(Native Method)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850): Caused by: java.lang.NullPointerException: println needs a message
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.util.Log.println_native(Native Method)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.util.Log.v(Log.java:116)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at com.inomera.ttmobilerehber.TTMobileRehberActivity.onActivityResult(TTMobileRehberActivity.java:155)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.Activity.dispatchActivityResult(Activity.java:3908)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
11-12 14:43:10.469: ERROR/AndroidRuntime(20850):     ... 11 more
11-12 14:43:10.489: ERROR/(162): Dumpstate > /data/log/dumpstate_app_error

【问题讨论】:

标签: android runtime-error android-activity


【解决方案1】:

您在TTMobileRehberActivity 的第155 行有一个NullPointerException,在您对Log.v() 的一次调用中。很遗憾,您拒绝指出这是哪条线。

既然你说:

我成功获取图片路径

那么我必须假设失败的调用不是:

Log.v("captured image path", capturedImageFilePath);

唯一可能失败的其他 Log.v() 调用是:

Log.v("upload path", handler.getPath());

那是指一些DataHandler 类,大概是你自己创造的。

【讨论】:

  • 是的,这也是一个问题,我解决了它,但我仍然有一个错误。我的错误:java.lang.RuntimeException: 传递结果失败 ResultInfo{who=null, request=1337, result=-1, data=null} 仍然是一样的
  • @cagryInside:向下滚动,找到“Caused by:”行,然后诊断您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2014-01-13
  • 2021-06-18
相关资源
最近更新 更多