ユーザーから写真を取得して、サーバーに送信しようとしています。ギャラリーから選択するか、携帯電話のデフォルトのカメラを使用して新しい写真を撮るという 2 つのオプションを提供します。
ギャラリーは正常に動作し、選択した写真を取得して問題なく送信できます。しかし、カメラ オプションでは、カメラが開き、写真を撮り、指定した場所で SD カードに保存しますが、問題はありませんが、アプリケーションに戻ると、常に NullPointerException が発生し、アプリケーションが強制的に閉じられます。これが私がすることです:
private String tempFilePath = "";
...
public void addPhotoUsingCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
tempFilePath = getOutputMediaFilePath(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(tempFilePath)));
startActivityForResult(intent, CAMERA_ACTIVITY_CODE);
}
そして、次を使用して写真を撮ります。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
...
case CAMERA_ACTIVITY_CODE:
if (resultCode == Activity.RESULT_OK) {
picture = new File(tempFilePath);
}
break;
...
}
}
私も試しました
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.photoTaken);
image.setImageBitmap(thumbnail);
内部case CAMERA_ACTIVITY_CODE:
ですが、何を試しても、コードのこの部分で常に NullPointerException が発生します。
行 202 が部分に対応する logcat 情報がありcase CAMERA_ACTIVITY_CODE:
ます。
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=101, result=-1, data=null} to activity {com.ollaa.android/com.ollaa.android.share.ShareFinalScreen}: java.lang.NullPointerException
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): Caused by: java.lang.NullPointerException
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): at com.ollaa.android.share.ShareFinalScreen.onActivityResult(ShareFinalScreen.java:202)
どんな助けでも大歓迎です。
注: AndroidManifest で、カメラと SD カードに関連するすべての必要なアクセス許可を宣言しました。
編集: tempFilePath は、カメラのアクティビティがアプリに戻るまで持続しないことに気付きました。tempFilePath の初期化をメソッドに入れましたonCreate
が、今回は 以外の外部関数からアクセスしようとすると画像が設定されませんonActivityResult
。私はJavaをまったく知らないような気がします.関数内でクラス変数を変更すると、変更された値はそのクラスのすべての関数から見えるはずですよね??