2012-03-07 7 views
2

アクティビティには、特定のURLを取得してWebViewコントロールで開くためのインテントフィルタがあります。これにより、認証ページ(ユーザー名/パスワード)が表示されます。認証が完了すると、ユーザーはバイナリストリームの応答(ファイル)を取得します。その応答を処理し、ストリームからデータを読み取る方法はありますか?WebViewでバイナリデータ応答を処理する方法

オーバーライドされたshouldOverrideUrlLoadingメソッドを使用してカスタムWebViewClientをセットアップしようとしましたが、アプリケーションがそこに到達しませんでした。

@Override 
mMyWebView.setWebViewClient(new CustomWebClient()); 
mMyWebView.loadUrl("http://xxx.xx.x.xx:xxxx/getCert"); 

... 
private class CustomWebClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String urlConection) 
    { 
     // break point here doesn't stop debugger 
     return true; 
    } 
} 

どちら

mMyWebView.setWebViewClient(new WebViewClient(){ 

    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String urlConection) 
    .... 
}); 

Serverがマイアプリの両方から同じようにリクエストに反応し、ビルドして、ブラウザで動作します。応答で受け取ったファイルをBuild-inブラウザからダウンロードし始めますが、私のアプリケーションは何もせず、CustomWebClientの中でブレークポイントにヒットしません。 これは、この部分をテストするためだけの別のアプリです。他に干渉するものはありません。インターネット& WRITE_EXTERNAL_STORAGE権限が追加されました。

EDIT:Mar 8 Gave up。 httpClientと一緒に行く予定です。

+0

良い質問ですが、これが可能かどうかを知りたいのですが。残念なことに、WebViewがレンダリングするWebページのコントロールはほとんどありません。私がこれを行う方法を知っている唯一の方法は、PhoneGapを実装してWebコードをアプリケーションと統合することです。 – bbedward

+0

それが本当であれば迷惑です。まだWebViewの実装を書き直す(おそらく簡単ではない)か、WebServicesを使ってHttpClient経由で通信を実装するオプションがあります – Maxim

+0

あなたのコードは大丈夫だと思われ、ブレークポイントはヒットするはずです。 – Caner

答えて

1

WebViewのこの方法を実装しましたか?

void setDownloadListener(DownloadListener listener) レンダリングエンジンでコンテンツを処理できない場合に使用するインターフェイスを登録します。代わりにダウンロードする必要があります。

+0

良い点、ありがとう。私のアプリは実際にレンダリングされるのではなく、コンテンツがダウンロードされるべきであることを通知されます。しかし、まだ質問...どのようにダウンロードを処理するには? – Maxim

関連する問題