2016-03-28 18 views
0

webviewにURLをロードしています。すなわち、最初にWebviewでログインページをロードしています。その後、ユーザー名とパスワードを入力してwebviewページのログインボタンをタップすると、そのログオンの特定のセッションキーがWebビューに表示されます。今私はそのセッションキーを読んで、その情報をユーザーから隠したいと思っています。誰もそれをどうやって考えているのですか?webviewのコンテンツを読み込み、リダイレクト

ありがとうございました。

+0

私は多くの人がそれをどうやって行うかについてさまざまな考えを持っていると確信しています。あなたが試したことから始めることができます。すべてのあなたのコードとあなたがそれを持っているすべてのエラーや問題を私たちに教えてください。 – Tigger

+0

http://stackoverflow.com/questions/10213487/how-can-i-get-the-json-response-of-a-post-request-in-a-webview今後の使用のために共有設定でキーを保存します。 – ashish

+0

基本的には、セッションキーを読みたいだけです。これでwebview本体に表示されます。私はその値を読む方法を理解できませんでした。一度読んだら、別のWebページにリダイレクトすることができます –

答えて

0

これを行う方法が見つかりました。すなわち、最初に本文中のトークンを読んでおり、トークンが見つかると、webViewを不可視にします。あなたの提案は私には当てはまりません。時にはログインページを表示したいのです。つまり、ユーザーが特定のアカウントにログインしていない場合は、ウェブビューを表示する必要があります。ログイン後にトークンを返すと、webviewは非表示にする必要があります。

0

同じ質問が複数回回答されました。すべての回答はthis postです。この投稿には最後に警告がありますが、私はtouが探しているものを達成するための他の方法を見つけることができませんでした。 以下はこの記事のコードのコピー・ペーストです。

final Context myApp = this; 

/* An instance of this class will be registered as a JavaScript interface */ 
class MyJavaScriptInterface 
{ 
    @JavascriptInterface 
    @SuppressWarnings("unused") 
    public void processHTML(String html) 
    { 
     // process the html as needed by the app 
    } 
} 

    //Edit 1 start 
final ProgressDialog pd = ProgressDialog.show(OnlinePaymentActivity.this, "", "Please wait, your transaction is being processed...", true); 

//Edit 1 end 

final WebView browser = (WebView)findViewById(R.id.browser); 
/* JavaScript must be enabled if you want it to work, obviously */ 
browser.getSettings().setJavaScriptEnabled(true); 

/* Register a new JavaScript interface called HTMLOUT */ 
browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 

/* WebViewClient must be set BEFORE calling loadUrl! */ 
browser.setWebViewClient(new WebViewClient() { 

/////Edit 2 start 
        @Override 
        public void onPageStarted(WebView view, String url, Bitmap favicon) 
        { 


      If(browser.getVisibility() == View.VISIBLE) 
{ 
         browser.setVisibility(View.GONE); 
} 
         pd.show(); 
        } 
///// Edit 2 end 

    @Override 
    public void onPageFinished(WebView view, String url) 
    { 

//Edit 3 start 

If(browser.getVisibility() == View.GONE) 
{ 
         browser.setVisibility(View.VISIBLE); 
} 

    pd.dismiss(); 
// Edit 3 end 

     /* This call inject JavaScript into the page which just finished loading. */ 
     browser.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 
    } 
}); 

/* load a web page */ 
browser.loadUrl("http://lexandera.com/files/jsexamples/gethtml.html"); 
+0

こんにちは、私はHTMLコンテンツを読むことができます。今、私はそのWebページをエンドユーザに表示するのをやめています。基本的に私はwebviewに表示されているトークンを読む必要があり、私はそれをエンドユーザに見せたくありません。だから私はどのように読み込みを停止する必要がありますか? onPageFinished()は、すでにユーザーに表示されています。 –

+0

これはパーフェクトな解決策であるかどうかわかりませんが、私はこれを試してみることをお勧めします。 webviewにsetVisiblityを使用すると、Webページが読み込まれているときにWebviewを非表示にすることができます。次のページを読み込んだときに、再度Webviewを表示することができます。 間にあなたがしばらく待つためのprogressDialogを表示することができます。 –

関連する問題