2011-01-30 18 views
6

WebView bileşenindeki bir bağlantıya tıklarken Etkinlik başlatmaya çalışıyorum.Android SDK Web Görme çağrısı Etkinlik

Web sayfam Main.java içine yüklenmiştir ve adresindeki Web sitesinin içindeki bir bağlantıya tıklandığında SubActivity.java'u başlatmak isterim?

Ayrıca, bu etkinliğe parametreleri nasıl iletebilirim?

Örnek: inspection://Project/1

"Muayene" Benim uygulamanın adıdır, inspection ı başlatmak istiyorum Hareketi ve 1 ben istiyorum kimliktir.

+0

olduğunu Sen Bu makaleye bir göz atmalı: [WebView'da Web Uygulamaları Oluşturma] (http://developer.android.com/guide/webapps/webview.html) –

cevap

12

JavaScript'in uygulamanızı denetlemesine izin vermek için WebView'un addJavaScriptInterface'unu kullanabilirsiniz (bu durumda, JavaScript'in bir bağlantı tıklatıldığında bir Niyetin tetiklenmesine izin vermek için).

JavaScript bağlamak için sınıf örneğini geçmeleri gerekiyor Bunu yapmak için, böyle bir şey olabilir şunlardır: Sonra

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)); 
      } 
     }); 
     } 
    } 

Eklemek olduğunu bu satırlar boyunca bir şey ile WebView'da için:

webView.addJavascriptInterface(js, "Android"); 

WebView'den JavaScript’te yeni "Android" nesnesinin "launchIntent" yöntemini kullanıyorsunuz.

0

Bir seçenek web görünümünün URL yüklemesini geçersiz kılmak ve yeni etkinliği başlatmak istediğiniz tıklamayı almaktır. dokümanlarında subclassed WebViewClient kullanımını göz atın:

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

Diğer bir seçenek, özel bir URL şeması için aktivite bağlamaktır. Genellikle Web tarayıcısı yerine tarayıcı aracılığıyla OAuth istemci tarafında oldukça yaygındır, ancak benzer şekilde yeterince çalışmalıdır. Burada tam bir örnek var: bu üretir Niyet aracılığıyla başlatılan alma url şeması işleyicisi yanı sıra işleme bağlamak nasıl gösterir

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

(OAUTH.java içinde onResume() bakınız). İlk onclick web sayfanızın butonuna JavaScript yöntemi ekleyin

0

() fonksiyonu aşağıda tanımlanan ..

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

Android Kod .. javascript Arayüz için buraya

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); 

}