0

J'ai commencé à travailler sur la capture d'une image de la came à l'aide du fournisseur de fichiers. Mon fragment appelle l'intention de capture de cam selon les documents android liés à take image simply.Valeur d'intention nulle dans la méthode onActivityResult du fragment

Le problème est dans onActivityResult méthode intention renvoie null. Voici comment je définis tout. Je ne suis pas capable de comprendre ce que je fais mal.

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> 

mise en œuvre sur l'intention de camcapture dans 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 dans le fragment

@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 
     } 
    } 
} 

J'essayé d'appeler onActivityResult() de l'activité d'hébergement mais comme même résultat. Besoin d'un pointeur dans la bonne direction .. Merci d'avance.

+0

Avez-vous mis le résultat en revenant à la même activité ou le même fragment? ** setResult (RESULT_OK, intention) ** et terminez votre activité. –

+0

oui .. ça n'aide pas .. plus je suis en fragment et je veux juste capturer des images résultat donc entre je n'ai pas besoin de terminer l'activité –

Répondre

0

Cela sera utile data in onActivityResult is null

Et si data.getData() retourne null puis essayez:

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

Hope qui aide :)

+0

Merci pour la réponse, j'ai essayé mais selon les docs il donne juste le image miniature et je veux travailler avec l'image en taille réelle. –

+0

Vous pouvez utiliser l'autre méthode que vous avez utilisée dans le code ci-dessus et passer getExtras au lieu d'obtenir des données. –