2017-07-16 4 views
0

J'essaie de prendre une photo, puis de l'enregistrer et de la télécharger sur Firebase mais pour une raison quelconque, lorsque j'essaie ceci sur n'importe quel émulateur, cela fonctionne sur mon vrai téléphone. obtenez le message que le fichier n'existe pas. REMARQUE: l'utilisateur a déjà donné son autorisation pour la caméra et le stockage. User.pictureTaken ET User.pictureTakenName sont juste 2 chaînes statiques dans une autre classe que j'utilise pour enregistrer rapidement le chemin et l'UUID.Prendre l'image de la caméra fonctionne sur l'émulateur mais pas sur le vrai périphérique

Prendre la photo:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

File file = getOutputMediaFile(null); 
Uri photoUri = FileProvider.getUriForFile(getActivity(), getActivity().getApplicationContext().getPackageName() + ".provider", file); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
User.pictureTaken = file.getPath(); 
Log.d("MyTag", "URL: " + file.getPath()); 

startActivityForResult(intent, TAKE_PHOTO_CODE); 

Obtenir le imagepath:

private File getOutputMediaFile(String newUUID){ 
    if (newUUID == null) { 
     newUUID = UUID.randomUUID().toString(); 
     User.pictureTakenName = newUUID; 
    } 

    return new File(getActivity().getFilesDir(), newUUID); 
} 

Essayer d'ouvrir le fichier:

File mediaStorageDir = getOutputMediaFile(User.pictureTakenName); 
InputStream stream = new FileInputStream(mediaStorageDir); 
UploadTask uploadTask = FirebaseReferences.selfies.child(User.pictureTakenName).putStream(stream); 

Il est sur la dernière ligne ici qu'il donne l'erreur , le code ci-dessous n'est pas inclus car ce n'est pas pertinent.

Répondre

1

Vous avez donné le chemin du fichier pour le stockage interne, alors essayez de donner un chemin de stockage externe, cela fonctionnera très bien.

changement que vous getOutputMediaFile comme ça,

private File getOutputMediaFile(String newUUID){ 
    if (newUUID == null) { 
     newUUID = UUID.randomUUID().toString(); 
     User.pictureTakenName = newUUID; 
    } 

    return new File(Environment.getExternalStorageDirectory(), newUUID); 
} 

Et essayer de revenir de ce chemin.

+0

Ok, im actuellement loin de la maison mais je vais essayer cela et revenir à vous. Merci déjà! –

+0

Merci! Cela a fonctionné. Pouvez-vous expliquer pourquoi cela ne fonctionne pas pour le stockage interne ou est-ce parce que le téléphone n'est pas enraciné? –