6

Sto cercando di sviluppare un'applicazione per browser Android utilizzando WebView che consente agli utenti di accedere al contenuto da un protocollo personalizzato. Il protocollo personalizzato potrebbe essere foobar: //Gestore del protocollo Android WebView

Voglio intercettare tutte le richieste a questo protocollo personalizzato. Ciò significa:

  1. GET richiede
  2. richieste POST

e ho bisogno di essere in grado di consegnare i risultati di queste operazioni di back al WebView.

Le richieste GET possono essere gestite utilizzando shouldInterceptRequest (disponibile dal livello API 11).

Ora il mio problema è: Come posso incerceptare e gestire le richieste POST?

Quasi la stessa domanda è stata posta here e here, tuttavia non sono state trovate soluzioni per i loro problemi.

+0

hai provato a sovrascrivere il carico dell'URL? – Raykud

risposta

0

Hai provato l'override per il metodo post facendo qualcosa di simile:

private class ViewerWebViewClient extends WebViewClient { 

     @Override 
     public void onPageFinished(WebView view, String url) { 

     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, final String url) { 
      if(!url.contains(MYKEYWORD)) 
       { 
       Toast.makeText(getActivity(),POSTING, Toast.LENGTH_LONG).show(); 
       return true; 
       } 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 

suo solo un'idea. che forse potrebbe aiutarti.

+2

Questo è utile se l'utente sta navigando verso qualche URL e lascia la pagina corrente. Posso quindi utilizzare WebView.loadUrl (...) o .post (...). Se tuttavia il browser sta solo facendo una richiesta in background (si pensi a javascript), non posso restituire il contenuto per questo. shouldInterceptRequest può gestire le richieste GET e restituire il contenuto, ma non è possibile intercettare le richieste POST e ottenere i dati POST. Sfortunatamente il tuo metodo non risolve il problema. Grazie per aver provato! – foens