2011-01-30 4 views
6

Я пытаюсь запустить Activity при нажатии ссылки внутри компонента WebView.Android SDK WebView call Activity

Мой веб-просмотр загружен внутри Main.java, и я хотел бы запустить SubActivity.java при нажатии ссылки на веб-сайте, который находится в Main.java?

Также, как я могу передать параметры этой активности?

Пример: inspection://Project/1

«Inspection» это название моего приложения, inspection является активность Я хотел бы начать и 1 это идентификатор я хотел бы иметь.

+0

Вы также следует взглянуть на эту статью [Создание веб-приложений в WebView] (http://developer.android.com/guide/webapps/webview.html) –

ответ

12

Вы можете использовать addJavaScriptInterface WebView, чтобы разрешить JavaScript управлять вашим приложением (в этом случае разрешить JavaScript запускать намерение при нажатии ссылки).

Для этого вам нужно передать экземпляр класса связываться с JavaScript, это может быть что-то вроде следующего:

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

Затем добавить, что в WebView с чем-то вдоль этих линий:

webView.addJavascriptInterface(js, "Android"); 

Затем в JavaScript из WebView вы просто используете свой новый метод «launchIntent» объекта «Android».

0

Один из вариантов заключается в том, чтобы переопределить загрузку URL-адреса веб-представления и получить щелчок, который вы хотите запустить для нового действия. Проверьте использование подклассы WebViewClient в документации:

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

Другой вариант заключается в связывании вашей деятельности на схему пользовательского URL. Это довольно часто происходит при использовании OAuth на стороне клиента, часто через браузер вместо WebView, но он должен работать аналогичным образом. Там в полный пример здесь:

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

Это показывает, как связать URL-адрес обработчика схемы, а также обработку получать запущенный через Намерение он генерирует (см onResume() в OAUTH.java).

0

Первый метод Add яваскрипта на кнопку вашего веб-страницы OnClick() функция определена ниже ..

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

Android код здесь для яваскрипта интерфейса ..

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

}

Смежные вопросы