2012-05-11 3 views
1

В моем приложении есть экран входа в систему в первый раз, который отображается в веб-представлении. На этом экране появится всплывающее окно с именем пользователя и паролем. После указания деталей при нажатии кнопки входа в систему будет отправлено имя пользователя и пароль, и он будет вызывать php-код для проверки имени пользователя и пароля, который перенаправляет ссылку, которая будет перезагружена в веб-просмотре. Когда этот URL-адрес загружен, я должен прослушать URL-адрес, и если URL-адрес соответствует некоторому рассмотрению, я хочу закончить деятельность веб-просмотра и перейти к следующему действию.Клиент Webview не прослушивание shouldOverrideUrlLoading

Проблема такая, когда я не могу прослушать URL-адрес, который генерируется после входа в систему. Поскольку у кнопки входа нет входа в систему, shouldOverrideUrlLoading не вызывает. Я попытался использовать onPageFinished, onLoadResource, onPageStarted. Но только несколько устройств называют эти функции.

Я хочу получить URL-адрес после нажатия кнопки «Логин». Есть ли другой способ решить эту проблему.

Это мой код:

public class AndroidTestActivity extends Activity { 
/** Called when the activity is first created. */ 
WebView mWebView; 
Context ctx; 
String str = ""; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ctx = this; 

    mWebView = (WebView) findViewById(R.id.mywebview); 
    mWebView.setWebViewClient(new MyWebClient()); 
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setSavePassword(false); 
    webSettings.setSaveFormData(false); 
    webSettings.setJavaScriptEnabled(true); 

    mWebView.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, 
       android.webkit.JsResult result) { 
      // Required functionality here 
      return super.onJsAlert(view, url, message, result); 
     } 
    }); 
    mWebView.loadUrl("http://This is my log in screen"); 


} 

class MyWebClient extends WebViewClient { 
    MyWebClient() { 
     Log.e("test", "Inside WebViewClient"); 
    } 

    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     Log.e("onPageStarted", url); 
     str = str + "onPageStarted : " + url + "\n"; 
    } 

    public void onLoadResource(WebView view, String url) { 
        Log.e("onLoadResource", url); 
     str = str + "onLoadResource : " + url + "\n"; 
    } 

    public void onPageFinished(WebView view, String url) { 
     Log.e("onPageFinished", url); 
     str = str + "onPageFinished : " + url + "\n"; 
    } 

    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     Log.e("shouldOverrideUrlLoading", url); 
     str = str + "shouldOverrideUrlLoading : " + url + "\n"; 
     return true; 
    } 

} 

} 

спасибо С уважением, Снайпер.

ответ

2

Если у вас есть доступ к странице html экрана входа в систему, и если вы можете ее изменить, то Я предлагаю вам использовать javaScriptInterface для обработки onClickListener вашей кнопки входа.

ссылка ниже показывает способ использования javascriptInterface для вызова кнопки html и вызова функции Android из этого clickEvent.

using javascript in android webview

надеюсь, что это помогло вам ...

+0

Большое спасибо. Вы спасли мое время. Но после завершения операции диалог показывает «полное действие с помощью Dialog» со списком браузеров в устройстве. Как я могу избежать этого. – Sniper

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