1

HttpClient を使用して Web ページに接続するアプリをプログラミングしています (目的は、Web ページの HTML の一部を文字列にコピーできるようにすることです)。HttpClient 接続を使用してこれを達成しようとしました。これは私が使用したコードです:

public void getText() {
    final TextView contentView = (TextView) findViewById(R.id.textview);
   String url = "http://www.anandtech.com";
    /* An instance of this class will be registered as a JavaScript interface */ 
HttpClient client = new DefaultHttpClient();

HttpGet get = new HttpGet(url);
ResponseHandler<String> handler = new BasicResponseHandler();
try {
    String response = client.execute(get, handler);
    contentView.setText(response);
} catch (Exception e) {
    // TODO Auto-generated catch block
    contentView.setText(e.getMessage());
}

}

このブロックの各ステートメントを削除し、エラーが引き続き発生するかどうかをテストしてエラーの原因を特定し、エラーが client.execute(get, handler) から発生したことを発見しました。私は AndroidManifest.xml でインターネットを使用する権限を持っています。WebView は問題なくロードできるため、アプリでインターネットが機能することはわかっています。どうすればこれを機能させることができますか?

また、次のコードを使用して、javascript を webview の URL に挿入して文字列を取得しようとしました。

MyJavaScriptInterface.class class MyJavaScriptInterface { プライベート TextView contentView;

        public MyJavaScriptInterface(TextView aContentView)
        {
            contentView = aContentView;
        }
    }

MainActivity.java @SuppressWarnings("unused")

        public void processContent(String aContent) 
        { 
            final String content = aContent;
            contentView.post(new Runnable() 
            {    
                public void run() 
                {          
                    contentView.setText(content);        
                }     
            });
        } 
    } 

    webView.getSettings().setJavaScriptEnabled(true); 
    webView.addJavascriptInterface(new MyJavaScriptInterface(contentView),"INTERFACE"); 
    webView.setWebViewClient(new WebViewClient() { 
        @Override 
        public void onPageFinished(WebView view, String url) {
        webView.loadUrl("javascript:window.INTERFACE.processContent(
        document.getElementsByTagName('p')[0].innerHTML);");
        } 
    }); 

    webView.loadUrl("http://tabshowdown.blogspot.com");

クラスと processContent() メソッドの両方が、Activity の void onCreate メソッドである FIY で定義されました。この場合の問題は、javascript が processContent() メソッドを開始していないことです。document.write() などの他の javascript コマンドを初期化しようとすると、webview が反応するので、javascript は問題になりません。スクリプトの他の場所から MyJavaScriptInterface と processContent() メソッドを開始しようとすると、問題なく動作します。そのため、javascript がメソッドの開始に問題があるように見えます (他のユーザーがこのメソッドが機能すると報告していても)。

誰かがこれらの方法のいずれかを機能させるのを手伝ってくれますか? 前もって感謝します

4

1 に答える 1