J'ai une application et j'ai besoin de prendre des photos, puis le télécharger sur Firebase. J'ai fondamentalement besoin du chemin d'Uri de la photo prise. Je lis Get file path of image on Android, mais j'ai un problème avec NullPointerException.Android obtenir le chemin du fichier de l'image avec en Fragment
La principale différence entre mon problème et le problème ci-dessus est que je le fais dans un fragment.
Voici mon code:
mTakePhotoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
Je reçois NullPointerException en ligne avec Uri imgUri.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
mImgView.setImageBitmap(photo);
Uri imgUri = getImageUri(getActivity().getApplicationContext(), photo);
mManager.setPhotoUri(imgUri);
}
}
Et voici la méthode que j'utilise pour obtenir Uri.
private Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
Le message d'erreur est exacte:
java.lang.RuntimeException: non livrer résultat resultinfo {qui = android: fragment: 1, demande = 22222, résultat = -1, données = Intention {act = ligne-data (a extras)}} à l'activité {.MainActivity}: java.lang.NullPointerException: uriString
Je vous serais reconnaissant toute aide.
L'ensemble de journal d'erreurs:
09-14 12: 06: 18,448 16497-16497/com.example.radzik.recipes E/AndroidRuntime: FATAL EXCEPTION: principal processus: com.example.radzik .recipes, PID: 16497 java.lang.RuntimeException: Echec de la livraison du résultat ResultInfo {who = android: fragment: 1, requête = 22222, résultat = -1, data = Intention {act = inline-data (a des extras)}} à l'activité {com.example.radzik.recipes/com.example.radzik.recipes.activity.MainActivity}: java.lang.NullPointerException: uriString at android.app.ActivityThread.deliverResults (ActivityThread.java:3699) à android.app.ActivityThread.handleSendResult (ActivityThread.java:3742) à android.app.ActivityThread.-wrap16 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1393) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java:5417) à java .lang.reflect.Method.invoke (Méthode native) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (Zygo teInit.java:616) Causée par: java.lang.NullPointerException:.. uriString à android.net.Uri $ StringUri (Uri.java:475) à android.net.Uri $ StringUri (Uri.java) à android.net.Uri.parse (Uri.java:437) à com.example.radzik.recipes.fragment.ChoosePhotoFragment.getImageUri (ChoosePhotoFragment.java:144) à com.example.radzik.recipes.fragment.ChoosePhotoFragment .onActivityResult (ChoosePhotoFragment.java:135) à android.app.Activity.dispatchActivityResult (Activity.java:6452) à android.app.ActivityThread.deliverResults (ActivityThread.java:3695) à android.app.ActivityThread.handleSendResult (ActivityThread.java:3742) at android.app.ActivityThread.-wrap16 (ActivityThread.java) à l'adresse android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1393) at android.os.Handler.dispatchMessage (Handler .java: 102) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java:5417) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
Pouvez-vous poster la totalité du journal d'erreur qui contient également le cadre de la pile? – Sundeep
J'ai mis à jour ma question avec l'erreur complète –
Il semble que l'appel 'insertImage' renvoie null, et par conséquent' path' est 'null'. Voir https://stackoverflow.com/questions/23059580/mediastore-images-media-insertimage-is-returning-null-when-trying-to-save-the-im – Sundeep