2017-11-07 2 views
0

Ich versuche, Schriftarten mit WebView und DoanloadManager herunterzuladen. Ich setze das Download-Verzeichnis als "Fonts" -Ordner unter Verwendung von Environment.getExternalStorageDirectory() + "/Fonts/", aber ich erstelle stattdessen ein anderes unerwünschtes Verzeichnis, sdcard/storage/emulated/0/Fonts/. Was ist falsch an meinem Code? Hier ist der vollständige Code-Schnipsel:Warum gibt Environment.getExternalStorageDirectory den falschen Pfad zurück?

@Override 
     public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) { 
      String filename = URLUtil.guessFileName(url, contentDisposition, mimeType); 
      DownloadManager.Request request = new DownloadManager.Request(
        Uri.parse(url)); 
      request.setMimeType(mimeType); 
      String cookies = CookieManager.getInstance().getCookie(url); 
      request.addRequestHeader("cookie", cookies); 
      request.addRequestHeader("User-Agent", userAgent); 
      request.setDescription("Downloading file..."); 
      request.setTitle(filename); 
      request.allowScanningByMediaScanner(); 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      request.setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory() + "/Fonts/", filename); 
      DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
      dm.enqueue(request); 
+0

Führen Sie Ihren Code auf einem Emulator statt auf einem echten Gerät aus? –

Antwort

0

sdcard/storage/emulated/0/ Weg ist, die normalerweise von Environment.getExternalStorageDirectory() zurückgegeben wird, wenn Sie einen Emulator verwenden.

Environment.getExternalStorageDirectory() kann jeden Ordner zurückgeben und Sie können nicht wirklich den Pfad antizipieren. Heute haben wir mehrere Profile auf demselben Gerät. Dies kann sich auch basierend auf der Android-API-Version ändern.

+0

Was meinst du mit API-Version? Es hat immer den erwarteten Weg auf meiner Galaxie s7 android 7 zurückgegeben. Ich habe Android Studio jedoch aktualisiert. –

+0

Mit verschiedenen Api-Versionen werden neue Funktionen eingeführt. Wie mehrere Benutzerkonten in einem einzigen Handy. Hier wird 'getExternalStorageDirectory()' einen anderen Pfad für verschiedene Benutzer zurückgeben. Aus diesem Grund können Sie den von 'getExternalStorageDirectory()' zurückgegebenen Wert niemals fest codieren. Der Benutzer hat möglicherweise eine SD-Karte oder der interne Speicher und der externe Speicherpfad sind davon betroffen. Warum interessiert es Sie, welcher Standort von der Methode zurückgegeben wird? Das System gibt den bestmöglichen Pfad zurück. – Henry

Verwandte Themen