0

写真を撮ってサーバーに送信するアプリケーションがあります。撮影とサーバー(受理画像)は完全に独立しています。サーバーに写真を撮った後、以下のコードを使用しようとすると、アプリケーションが強制的に閉じられます。コードは次のとおりです。

protected void onActivityResult(int requestCode, int resultCode, Intent data){
   if (resultCode == RESULT_OK){
      Uri imageUri=data.getData();
      List<NameValuePair> params = new ArrayList<NameValuePair>(1);
      params.add(new BasicNameValuePair("image", imageUri.getPath()));
      post("http://myserver-address",params);
   }
}

post メソッドはHttp Post を使用して画像を送信するのと同じです

ログ猫は次のように述べています。

java.lang.RuntimeException: Unable to resume activity
{com.john.smith/com.john.smith.Activity}: java.lang.RuntimeException:
Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null}
to activity {com.john.smith/com.john.smith.Activity}:
   java.lang.NullPointerException

send関数にパラメータを渡すのに何か問題があると思います。送信機能のすべての行を無効にしようとしても、まだエラーに直面しているためです。そして、このエラーにより、アプリケーションが強制的に閉じられます。

どうすればその問題を解決できますか? send私のもの以外の機能に写真を渡す方法は?

アップデート:

私のカメラ キャプチャ コードはhttp://code.google.com/p/crw-cmu/source/browse/luis/PhotoIntentActivity/src/com/example/android/photobyintent/PhotoIntentActivity.java?r=734と同じです

私はそう呼んでいます

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

        switch (requestCode) {
        case ACTION_TAKE_PHOTO_B: {
            if (resultCode == RESULT_OK) {
            handleBigCameraPhoto();
          Uri imageUri=data.getData();
          List<NameValuePair> params = new ArrayList<NameValuePair>(1);
          params.add(new BasicNameValuePair("image", imageUri.getPath()));
          post("http://myserver-address",params);
        }
            }
            break;
        } // ACTION_TAKE_PHOTO_B

    } // switch
}
4

1 に答える 1

0

ログが示すdata=nullようUri imageUri=data.getData();に、NPE が発生します。

データがすべての場合に設定されているわけではないため、いくつif( requestCode == ...) {かを追加することをお勧めします。switch( requestCode )

クラッシュを回避するには、 と を逆参照する前に null をチェックする必要がdataありimageUriます。else句にいくつかのログを追加します。

インターネット検索により、次の結果が得られます。

于 2012-11-08T17:49:03.820 に答える