0

ファイルプロバイダを使用してカムイメージをキャプチャする作業を開始しました。私の断片は、take image simplyに関連するアンドロイドのドキュメントによると、カムキャプチャインテントを呼び出します。フラグメントのonActivityResultメソッドにおけるインテント値null

問題はonActivityResultにあります。メソッドインテントはnullを返します。ここで私はすべてを設定する方法です。私は何が間違っているのか理解できません。

のAndroidManifest.xml

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="${applicationId}.fileprovider" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/file_path" /> 
    </provider> 

file_path.xml

<paths> 
    <external-files-path name="my_images" /> 
</paths> 

camcaptureの意図に実装でFragment.class

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File photoFile = null; 

    try { 
     photoFile = Utils.createImageFile(getContext()); 
     String authorities = context.getPackageName()+".fileprovider"; 
     uriForFile = FileProvider.getUriForFile(context, authorities, photoFile); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    Log.d(TAG, "handleCaptureImage: "+uriForFile); // shows this result in logs content://appid.fileprovider/my_images/Pictures/JPEG_20170918_181145_719404055.jpg 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uriForFile); 
    startActivityForResult(intent, OPEN_CAMERA); 

フラグメントでonActivityResult

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == RESULT_OK) { 

     if (requestCode == PICK_IMAGE) { 
      try { 
       //works fine bitmap generated correctly. 
       Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else if (requestCode == OPEN_CAMERA) { 
      Log.d(TAG, "onActivityResult: "+data); //data always null 
     } 
    } 
} 

私は同じ結果としての活動をホストにonActivityResult()を呼び出してみました。正しい方向にポインタが必要です。事前にありがとうございます。

+0

はあなたが結果を設定しました同じ活動か断片か? ** setResult(RESULT_OK、intent)**そしてアクティビティを終了します。 –

+0

はい..それは助けません。プラス私は断片的ですし、私はちょうどその間に捕獲された画像結果を望んでいます。私は活動を終了する必要はありません –

答えて

0

これは参考になるdata in onActivityResult is null

とdata.getData()がnullを返す場合、してみてください :

Bundle extras = data.getExtras(); 
    Bitmap bitmap = (Bitmap) extras.get("data"); 

希望に役立つこと:)に戻って来ながら

+0

返信ありがとう、私はこれを試しましたが、サムネイル画像と私はフルサイズの画像で作業したい。 –

+0

上記のコードで使用した他のメソッドを使用し、getデータのgetExtras inteを渡すことができます。 –

関連する問題