2016-04-21 4 views
0
DownloadManager.Request request = new DownloadManager.Request(uri); 
     request.setDestinationInExternalPublicDir(Environment. 
         DIRECTORY_DOWNLOADS, nameOfFile) 

Um sie zu öffnenNach dem Download, wie heruntergeladene Datei zu öffnen?

 File file = new File(Environment. 
        DIRECTORY_DOWNLOADS, nameOfFile); 
      MimeTypeMap map = MimeTypeMap.getSingleton(); 
      String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName()); 
      String type = map.getMimeTypeFromExtension(ext); 

Aber ich erhalte eine Fehlermeldung, die Datei nicht accessed.Check die Lage

+0

Haben Sie die erforderlichen Berechtigungen verfügen? – camelCaseCoder

+0

ja ich habe @camelCaseCoder –

+0

Ok, ist der Dateipfad korrekt? Und testen Sie das auf Android 6? – camelCaseCoder

Antwort

1
sein kann

Versuchen Leseberechtigung mit:

android.permission.READ_EXTERNAL_STORAGE 
+0

Kein Erhalten desselben Fehlers –

0

wie Try this ...

protected void openFile(String fileName) { 
    Intent install = new Intent(Intent.ACTION_VIEW); 
    install.setDataAndType(Uri.fromFile(new File(fileName)), 
      "MIME-TYPE"); 
    startActivity(install); 
} 
+0

Sie können auch ein Beispiel hier sehen https://github.com/commonsguy/cw-android/blob/master/Internet/Download/src/ com/commonsware/android/download/DownloadDemo.java –

+0

Ich habe ein Verzeichnis erstellt dir Dateiordner = neue Datei (Environment.getExternalStorageDirectory() + "Wonders"); boolescher Erfolg = wahr; if (! Folder.exists()) { success = folder.mkdir(); Wie setze ich den Pfad request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, ****** hier **** , nameOfFile) @saurabh gupta –

0

Hier ist eine funktionierende Lösung. Hinweis: Verwenden Sie nicht DownloadManager.COLUMN_LOCAL_FILENAME, da es in API 24 veraltet ist. Verwenden Sie stattdessen DownloadManager.COLUMN_LOCAL_URI.

  1. Erstellen Sie Felder Download Manager und eine lange Variable, die Download-ID zu halten.

    DownloadManager dm; 
    long downloadId; 
    String pendingDownloadUrl = url; 
    fial int storagePermissionRequestCode = 101; 
    
  2. erstellen Download-Manager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);

  3. den Rundfunkempfänger zum Download registrieren kompletten

    BroadcastReceiver downloadCompleteReceiver = new BroadcastReceiver() { 
        @Override 
        public void onReceive(final Context context, final Intent intent) { 
         Cursor c = dm.query(new DownloadManager.Query().setFilterById(downloadId)); 
         if (c != null) { 
          c.moveToFirst(); 
          try { 
           String fileUri = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); 
           File mFile = new File(Uri.parse(fileUri).getPath()); 
           String fileName = mFile.getAbsolutePath(); 
           openFile(fileName); 
          }catch (Exception e){ 
           Log.e("error", "Could not open the downloaded file"); 
          } 
         } 
        } 
    };  
    

// registriert boradcast zum Download kompletten

registerReceiver(downloadCompleteReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 
  1. Starten Sie den Download

Starten Sie den Download

private void onDownloadStart(String url) { 
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
    downloadFile(url); 
} else { 
    pendingDownloadUrl = url; 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, storagePermissionRequestCode); 
} } 

// Download-Datei Download-Manager

private void downlaodFile(String url){ 
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 
    String filename = URLUtil.guessFileName(url, null, null); 
    request.allowScanningByMediaScanner(); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,filename); 
    downloadId = dm.enqueue(request);//save download id for later reference } 

// Berechtigungsstatus

@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    if(requestCode == storagePermissionRequestCode){ 
     boolean canDownload = true; 
     for (int grantResult : grantResults) { 
      if (grantResult == PackageManager.PERMISSION_DENIED) { 
       canDownload = false; 
       break; 
      } 
     } 
     if(canDownload){ 
      downlaodFile(pendingDownloadUrl); 
     } 
    }  } 
  1. Öffnen Sie die heruntergeladene Datei

    private void openFile(String file) { 
    try { 
        Intent i = new Intent(Intent.ACTION_VIEW); 
        i.setDataAndType(Uri.fromFile(new File(file)), "application/pdf");//this is for pdf file. Use appropreate mime type 
        startActivity(i); 
    } catch (Exception e) {   
        Toast.makeText(this,"No pdf viewing application detected. File saved in download folder",Toast.LENGTH_SHORT).show(); 
    } 
    }
  2. Jetzt versuchen die Dateien herunterladen, indem Aufruf downladFile(String url); Methode