Android SDK WebView вызов - PullRequest
       3

Android SDK WebView вызов

6 голосов
/ 31 января 2011

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

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

Кроме того, как я могу передать параметры этому занятию?

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

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

Ответы [ 3 ]

12 голосов
/ 31 января 2011

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

Для этого вам нужно передать экземпляр класса для привязки к 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 голосов
/ 30 апреля 2014

Сначала добавьте метод javascript на кнопку веб-страницы onclick () Функция определена ниже ..

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

Код Android здесь для интерфейса JavaScript.

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

}

0 голосов
/ 31 января 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...