WebView – non è ansible scaricare il file senza richiederlo due volte?

Se ascolto con DownloadListener , ottengo l'URL che devo richiedere dopo che il browser lo ha già richiesto . Il browser ha già aperto una connessione all'URL (che è come sa che questo è un download), perché non può passarmi la connessione?

Ho anche cercato di assegnare un WebViewClient personalizzato al WebView e utilizzare shouldOverrideUrlLoading per catturare gli URL prima che venga richiesto. Per scaricare i file in questo modo, richiedo each URL prima del browser e dal suo Tipo di contenuto io decido se scaricare o no, se lo scarico dalla connessione già aperta, altrimenti chiudo la connessione e istruisco browser per caricarlo e il browser … lo richiede di nuovo. Inoltre, in shouldOverrideUrlLoading mi è stato indicato quale metodo e quali cookie dovrei utilizzare per richiedere l'URL specificato.

  • Come eliminare un file su Google Drive utilizzando Google Drive Android API
  • Calendario Android ottiene giorno corrente della settimana come string
  • R.raw.thingthing non può essere risolto
  • Recupera il context da un frammento
  • Griglia 2D Array sulla canvas di disegno
  • Perché Android ignora l'authorization READ_SMS?
  • Come posso non richiedere inutilmente due volte e ancora poter scaricare i file con WebView?

  • WebView loadUrl funziona solo una volta
  • Abilitazione del JavaScript generale in WebViewClient
  • Problema quando si utilizza un carattere personalizzato - "non è ansible creare il tipo di carattere nativo"
  • come impostare il titolo diverso per la window di dialogo di avviso quando viene caricata la pagina WebView?
  • Elenco appendente in ListView
  • Android: Come hide un object ListView
  • 3 Solutions collect form web for “WebView – non è ansible scaricare il file senza richiederlo due volte?”

    Una semplice soluzione è modificarla per scaricarla senza chiedere all'utente la conferma basata sul tipo di contenuto, ma basta semplicemente mettere un button di annullamento su ciò che viene utilizzato per monitorare il download.

    Perché non utilizzare l'URL solo per scaricarlo usando l'output? Ecco un esempio:

     private class DownloadFile extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... sUrl) { try { URL url = new URL(sUrl[0]); URLConnection connection = url.openConnection(); connection.connect(); // download the file InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream("/sdcard/file_name.extension"); byte data[] = new byte[1024]; long total = 0; int count; while ((count = input.read(data)) != -1) { total += count; output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e) { } return null; } 

    Sei sicuro di voler interrompere il lavoro del browser? Utilizza il thread multy per scaricare più URL e gestisce anche il proprio file system per creare i cookie per quegli URL e sa quando è necessario eliminarli e aggiornarli.

    Quindi sei sicuro?

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.