13

WebView と Button を使用したアクティビティがあります。Android SDK 17. ウェブサイトは私のものではないため、とにかく変更できません。Androidボタンのクリックでjsコードを実行する必要があります。

私はこれをやろうとしています

public class RostelecomLoginActivity extends Activity {

WebView webView;
String url;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rostelecom_login);

    Intent webIntent = getIntent();
    final String url = webIntent.getStringExtra("url");

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSaveFormData(true);
    webView.getSettings().setSavePassword(true);

    Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            webView.addJavascriptInterface(new Object(){
                @JavascriptInterface
                public void test(){
                    Log.d("JS", "test");
                }
            },"Android");
            webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()");
        }
    });

    webView.loadUrl(url);

}}

しかし、それは何もしません。jsを正しく呼び出すにはどうすればよいですか?

4

3 に答える 3

12

これであなたのラインを変えてください..

myWebView.loadUrl("javascript:testEcho('Hello World!')");

これを試してみてください...

于 2013-06-10T13:20:50.023 に答える
1

アクセスしている外部 Web サイトをクリックしたときに、テスト関数を呼び出そうとしていると思います。

Java 側で定義した関数を呼び出す方法は、javascript インターフェイスを作成したときに割り当てた名前です。"Android"

したがって、呼び出しは「window.Android.test()」になります

また、Web サイトの読み込みを待ってから、javascript コードを挿入する必要があります。

数週間前にコードHide WebView until JavaScript is done で行った回答を確認してください。webview を使用して JS と Java を管理するのと同様のアプローチです。

ページの読み込み時に簡単なテストを開始し、後で JavaScript のクリック関数内に追加することを検討してください。

于 2013-06-10T13:08:25.650 に答える