2016-12-14 12 views
0

カメラの意図を使用して取得するキャプチャ画像からファイルパスを取得しようとしています。写真を撮影し、それを返すことは正常に動作しますが、私は意図からデータを取得し、そのパスを取得することにより、OnActivityResult方法でそれからパスを取得しようとすると、私は次のエラーを取得する:Intent.getData.getPath()はnull値を返します

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.package.app/com.package.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List android.net.Uri.getPathSegments()' on a null object reference 

私が言ったように、写真撮影は機能し、添付ファイルとしてメールアプリケーションに送信しても問題はありませんが、そのパスを取得することは問題です。ここに私のOnActivityResult方法のコードだ(私はちょうどある、getPath()の結果がどのように見えるかを確認するためのTextView上のsetText()を入れている):

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

    if(resultCode == RESULT_OK){ 

     if(requestCode == 1){ 

      imageUri = data.getData(); 


     } 
    } 
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { 


     imageUri = data.getData(); 
     path = imageUri.getPath(); 
     tv = (TextView) findViewById(R.id.tvField); 
     tv.setText(path); 


    } 
} 

を最後の3行がなければ、それは完璧に動作します。回線へのエラーポイント:

path = imageUri.getPath(); 

問題に事前に関心をお寄せいただきありがとうございます。

ここでカメラ要求

ibCam= (ImageButton) findViewById(R.id.ibCam); 

     ibCam.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

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

      } 
     }); 
+0

結果は、結果のアクティビティを開始するために作成するインテントによって異なります。 – Dharmendra

+0

アクティビティを開始する場所にコードスニペットを含める必要があります。 – MilesWeirdo

+0

'写真を撮って戻しても問題ありません。あなたは写真を返しますか?誰に? – greenapps

答えて

0
imageUri = data.getData(); 

ACTION_IMAGE_CAPTUREUriを返さないために意図があります。あなたのACTION_IMAGE_CAPTUREIntent考える

は、あなたが要求したサムネイルサイズの写真を取得するためにBitmap photo=data.getParcelableExtra("data")を使用しています。

+0

「ウリ」を使ってイメージを取得するのに問題はありません。写真のパスが必要です。ビットマップを取得してそのパスを取得できますか? 最終的には、このパスを 'javax.mail.Authenticator'を使用してアプリケーションに添付したいと思っています – MilesWeirdo

+0

@MilesWeirdo:「Uriを使用して画像を取得するのに問題はありません」 - *いくつかのカメラアプリは、 「ウリ」と答えた。大部分はそうではありません。なぜなら、[ACTION_IMAGE_CAPTUREがどのように動作するように文書化されているか](https://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE)ではないからです。パスが必要な場合は、[ACTION_IMAGE_CAPTURE]リクエストで 'EXTRA_OUTPUT'を使用してカメラアプリケーションに写真の配置場所を教えてください。](https://developer.android.com/training/camera/photobasics.html#TaskPath)。 – CommonsWare

関連する問題