2011-01-30 18 views
6

Sto tentando di avviare un'attività quando si fa clic su un collegamento all'interno di un componente WebView.Chiamata Android WebData SDK Attività

La mia Webview è caricata all'interno di Main.java e mi piacerebbe lanciare SubActivity.java quando si fa clic su un collegamento all'interno del sito Web che si trova in Main.java?

Inoltre, come posso passare i parametri a questa attività?

Esempio: inspection://Project/1

"ispezione" è il nome della mia candidatura, inspection è l'attività vorrei lanciare e 1 è l'ID mi piacerebbe avere.

+0

È dovrebbe anche dare un'occhiata a questo articolo [Building Web Apps in WebView] (http://developer.android.com/guide/webapps/webview.html) –

risposta

12

È possibile utilizzare WebView addJavaScriptInterface per consentire a JavaScript di controllare l'applicazione (in questo caso, per consentire a JavaScript di attivare un'intenzione quando viene fatto clic su un collegamento).

Per fare questo è necessario passare un'istanza di classe di legarsi a JavaScript, questo potrebbe essere qualcosa di simile al seguente:

private final class JsInterface { 
     public void launchIntent(final String payload) { 
     Activity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       // use the payload if you want, attach as an extra, switch destination, etc. 
       Activity.this.startActivity(new Intent(Activity.this, SomeOtherActivity.class)); 
      } 
     }); 
     } 
    } 

quindi si aggiunge che al WebView con qualcosa in queste righe:

webView.addJavascriptInterface(js, "Android"); 

Quindi in JavaScript da WebView è sufficiente utilizzare il nuovo metodo "launchIntent" dell'oggetto "Android".

0

Un'opzione è di ignorare il caricamento dell'URL della visualizzazione Web e raccogliere il clic su cui si desidera avviare la nuova attività. Scopri l'uso di un WebViewClient sottoclasse nella documentazione:

http://developer.android.com/resources/tutorials/views/hello-webview.html

Un'altra opzione è quella di legare la vostra attività ad un regime di URL personalizzato. È piuttosto comune eseguire OAuth lato client, spesso tramite il browser invece di una WebView, ma dovrebbe funzionare in modo abbastanza simile. C'è un esempio completo qui:

https://github.com/brione/Brion-Learns-OAuth

Che mostra come associare il gestore schema URL, nonche la gestione ottenendo lanciato tramite l'intento che genera (vedi onResume() in OAUTH.java).

0

First Aggiungi metodo javascript sul tasto della tua pagina web onclick() la funzione definita seguente ..

function showAndroidToast(toast) { 
    AndroidFunction.showToast(toast); 
} 

codice di Android è qui per javascript Interface ..

public class MyJavaScriptInterface { 
    Context mContext; 
    private Activity activity; 

     public MyJavaScriptInterface(Activity activiy) { 
      this.activity = activiy; 
     } 
@JavascriptInterface 
    public void showToast(String toast){ 
    Intent i=new Intent(getApplicationContext(), Subactivity.class); 

    i.putExtra("data", "tosecondActivity"); 
startActivity(i); 

}