AndroidのWebViewでJavascriptの動作方法を教えて下さい。(evaluateJavascriptの使用方法)
Android 9.0のWebViewでJavascriptを動かしたいのですがうまくいきません。
アドバイスを頂ければ幸いです。
WebViewのtextにAndroidのコード側から規定の文字を自動入力したいのですが、
反応してくれない状況です。
loadUrlでなくevaluateJavascriptを使うまでは調べられたのですが、そこからが進めません。
以下にコードを記載しますので、何か問題があればご指摘ください。
宜しくお願い致します。
Webページ上のコード
<input type="text" id="sampletext" value="テスト">
Android上のコード
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.w01_webview);
WebSettings webSettings = webView_w01.getSettings();
webSettings.setJavaScriptEnabled(true);
webView_w01.loadUrl(アドレス);
}
@Override
public void onPageFinished(WebView view, String url) {
webView_w01.evaluateJavascript("document.getElementById('sampletext').value = 'テキストは変更されました';”,null);
}
備考
Android StudioのLogに表示されるエラー
I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: アドレス (1)
ChromeのConsoleで動作確認済み
以下のコードでテキストは変更されました。このことからJavascriptのミスの可能性は低いと考えています。
document.getElementById('sampletext').value = 'テキストは変更されました';
まだ、解決していないので追記させていただきます。
質問後、@JavascriptInterfaceを試しましたが、状況は変わりませんでした。
@JavascriptInterface
public void onScriptReady() {
webView_w01.evaluateJavascript("javascript:document.getElementById('sampletext').value = 'テキストは変更されました';”,null);
}
Javascriptの設定不足か?とも考え、以下を試したところアラートは表示されました。
※loadUrlは上記onScriptReady()で試しております。
webView_w01.evaluateJavascript("alert('こんにちは')",null);
webView_w01.loadUrl("javascript:alert('こんにちは')");
また、気になる動作も確認しました。
いろいろなコードを試しているうち、2回だけtextに文字が自動入力されました。
ただし、再現性が無く、同じコードで何回試しても再現されません。
本件を調査しているとまれに「バグ」のような表記を見かけます。
これらについて何かアドバイスをいただますと幸いです。
宜しくお願い致します。