3

このバグのレビューを手伝ってくれる人、アクティビティで startActivityForResult (カメラを使用して画像を撮影)。写真を撮った後、私の活動は再開できません。:(

java.lang.RuntimeException: Unable to resume activity {com.example/com.example.view.main.PersonActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=998, result=-1, data=null} to activity {com.example/com.example.view.main.PersonActivity}: java.lang.NullPointerException

--------- Stack trace ---------

    android.app.ActivityThread.performResumeActivity(ActivityThread.java:2458)
    android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486)
    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000)
    android.app.ActivityThread.access$600(ActivityThread.java:128)
    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
    android.os.Handler.dispatchMessage(Handler.java:99)
    android.os.Looper.loop(Looper.java:137)
    android.app.ActivityThread.main(ActivityThread.java:4514)
    java.lang.reflect.Method.invokeNative(Native Method)
    java.lang.reflect.Method.invoke(Method.java:511)
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    dalvik.system.NativeStart.main(Native Method)
-------------------------------

--------- Cause ---------

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=998, result=-1, data=null} to activity {com.example/com.example.view.main.PersonActivity}: java.lang.NullPointerException

    android.app.ActivityThread.deliverResults(ActivityThread.java:2994)
    android.app.ActivityThread.performResumeActivity(ActivityThread.java:2445)
    android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486)
    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000)
    android.app.ActivityThread.access$600(ActivityThread.java:128)
    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
    android.os.Handler.dispatchMessage(Handler.java:99)
    android.os.Looper.loop(Looper.java:137)
    android.app.ActivityThread.main(ActivityThread.java:4514)
    java.lang.reflect.Method.invokeNative(Native Method)
    java.lang.reflect.Method.invoke(Method.java:511)
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    dalvik.system.NativeStart.main(Native Method)
-------------------------------

私のJavaコードでは、OnActivityResultで

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String filePath = "";
    switch (requestCode) {
    case MyActivity.RQ_SALE_TAKE_PHOTO:
        {
            if (resultCode == RESULT_OK) {
                if (data != null && data.getExtras() != null && data.getAction() != null) {
                    Bitmap tempBitmap = null;
                    tempBitmap = (Bitmap) data.getExtras().get("data");
                    //.....
                }
            } else {
                //DO SOMETHING HERE
            }
        }
        break;
    }
}

コードコールカメラ:

public static File takePhoto(Activity sender, int requestCode) {
    System.gc();
    final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    String fileName = Constants.TEMP_IMG + "_" + DateUtils.getCurrentDateTimeWithFormat(null) + ".jpg";
    File retFile = new File(ExternalStorage.getTakenPhotoPath(sender), fileName);
    if (!retFile.exists())
        try {
            retFile.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(retFile));
    sender.startActivityForResult(intent, requestCode);
    return retFile;
}

上記のエラーの説明と、このエラーの修正方法を教えてください。

4

4 に答える 4

3

戻りインテント " data" が nullのようです

startActivityForResultデフォルトのカメラアプリケーションを使用していることを確認してください。

デフォルトの Android カメラ アプリケーションは、返されたインテントでサムネイルを返す場合にのみ、null 以外のインテントを返します。EXTRA_OUTPUT に書き込み先の URL を渡すと、null インテントが返され、画像は渡した URL に含まれます。

于 2013-08-08T08:49:50.130 に答える
0

startActivity を実行するだけです。startActivityForResult を実行するときは、他の起動されたアクティビティから、自分のアクティビティに setResult() を設定する必要があります。

現在、カメラ アクティビティは結果を設定しておらず、onActivityResult 関数でクラッシュします。

于 2013-08-08T08:48:24.677 に答える
0

これを試して..

 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, requestCode);
于 2013-08-08T08:50:38.310 に答える
0

このコードを試してください:

try {
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    File photo = new File(photoPath);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
    startActivityForResult(Intent.createChooser(intent, "Capture Image"),
                            MyActivity.RQ_SALE_TAKE_PHOTO);
} catch (Exception e) {
}
于 2013-08-08T09:00:13.707 に答える