2017-07-16 2 views
0

Ich versuche, ein Bild zu machen und dann speichern und laden Sie es auf Firebase, aber aus irgendeinem Grund, wenn ich dies auf JEDEM Emulator versuche es funktioniert aber auf meinem echten Handy ich Erhalte die Nachricht, dass die Datei nicht existiert. HINWEIS: Der Benutzer hat bereits die Erlaubnis für Kamera und Speicher erteilt. User.pictureTaken UND User.pictureTakenName sind nur 2 statische Zeichenfolgen in einer anderen Klasse, die ich verwende, um den Pfad und die UUID schnell zu speichern.Kamerabild funktioniert auf Emulator, aber nicht auf echtem Gerät

Unter dem Bild:

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); 

die imagepath Anfahrt:

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

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

Der Versuch, die Datei zu öffnen:

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

Es ist auf der letzten Zeile ist hier, dass es gibt den Fehler Der Code darunter ist nicht enthalten, da er nicht relevant ist.

Antwort

1

Sie gaben den Dateipfad für den internen Speicher, also versuchen Sie, externen Speicherpfad zu geben, es wird gut funktionieren.

Ändern Sie wie folgt getOutputMediaFile,

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

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

Und versuchen, von diesem Weg zurück zu bekommen.

+0

Ok, ich bin im Moment nicht zu Hause, aber ich werde das ausprobieren und auf Sie zurückkommen. Danke schon! –

+0

Danke! Das hat funktioniert. Können Sie erklären, warum es nicht für internen Speicher funktioniert, oder ist das, weil das Telefon nicht verwurzelt ist? –

Verwandte Themen