2016-10-18 2 views
0

Ich versuche, ein Bild auf dem öffentlichen Speicherverzeichnis mit dem folgenden Code zu speichern. Wenn dies jedoch gespeichert wird/emuliert/0 und nicht in den öffentlichen Bilderordner. Ich habe im Grunde genau diesen Code in einer anderen App verwendet und es hat gut funktioniert. Weiß jemand, warum .getExternalStoragePublic Verzeichnis die barrierefreien/Pictures/nicht zurückgibt und stattdessen Speicher/emuliert/0 zurückgibt?Android - Vermeiden Sie den Speicher geschrieben/emulierten/0

I "verwendet-Erlaubnis android: name =" haben android.permission.WRITE_EXTERNAL_STORAGE "in meinem Manifest-Datei

File backupFile; 
File appFolder; 
String path= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/CustomFolder"; 
appFolder = new File(path); 
if (!appFolder.exists()) 
    appFolder.mkdir(); 
String fileName = "picture.jpg" 
backupFile = new File(appFolder, fileName); 
FileOutputStream output = null; 
try { 
    output = new FileOutputStream(backupFile); 
    output.write(bytes); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    mImage.close(); 
    if (null != output) { 
     try { 
      output.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

'appFolder.mkdir();' Überprüfen sie den Rückgabewert als Es könnte das Verzeichnis nicht erstellen. Zeigen Sie einen Toast an, wenn sie false zurückgibt, und fahren Sie nicht mit dem Code fort, sondern kehren Sie zurück. – greenapps

+0

Warum veröffentlichen Sie alle, dass Code, wenn das einzige, was Sie sagen wollen, ist, dass 'Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES) .getAbsolutePath()' ein anderer Ordner ist als erwartet. Oder nicht? – greenapps

+0

'gibt nicht die barrierefreien/Bilder/zurück und gibt stattdessen Speicher/emuliert/0 zurück. Es wird nie '/ Pictures /' zurückgeben, aber es könnte '/ storage/emulated/0/Pictures' zurückgeben. – greenapps

Antwort

0

Nevermind, ich es herausgefunden Es stellt sich nur mit aus." Verwendet Zulassungs android: name = „android.permission.WRITE_EXTERNAL_STORAGE“ in der Manifest-Datei reicht nicht aus, und ich hatte den folgenden Code zu setzen, bevor er es funktioniert:

int CAMERA_PERMISSION_REQUEST_CODE = 2; 
    int result = ContextCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    if (result != PackageManager.PERMISSION_GRANTED){ 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)){ 
      Toast.makeText(getActivity().getApplicationContext(), "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); 
     } else { 
      ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},CAMERA_PERMISSION_REQUEST_CODE); 
     } 
    } 
+0

Wenn dies das Problem war, haben Sie uns falsch informiert, als Sie sagten, dass das Bild geschrieben wurde. Nur an einem anderen Ort. – greenapps

Verwandte Themen