1

私のアプリケーションでは、Webビューに表示される最初のログイン画面があります。その画面に、ユーザー名とパスワードを含むポップアップが表示されます。ログインボタンが押されたときに詳細を入力した後、ユーザー名とパスワードが送信され、ユーザー名とパスワードの検証用のphpコードが呼び出され、Webビューに再読み込みされるリンクにリダイレクトされます。このURLがロードされたら、URLをリッスンする必要があります。URLが考慮事項と一致する場合は、Webviewアクティビティを終了して、次のアクティビティに進みます。

問題は、ログイン後に生成される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;
    }

}

}

よろしく、スナイパーに感謝します。

4

1 に答える 1

2

ログイン画面のhtmlページにアクセスでき、それを変更できる場合は、javaScriptInterfaceを使用してログインボタンのonClickListenerを処理することをお勧めします。

以下のリンクは、javascriptInterfaceを使用してhtmlボタンをクリックし、そのclickEventからandroid関数を呼び出す方法を示しています。

androidwebviewでjavascriptを使用する

これがお役に立てば幸いです...

于 2012-05-11T10:38:46.437 に答える