JAvascriptとwebviewのインタラクション
2861 ワード
プロジェクトでhtmlを使用するjs呼び出しandroidがwebviewをリフレッシュする必要があることに遭遇しました.ここではローカルhtmlをロードし、htmlでjsインタフェースを呼び出す必要があります.キーコードを調べると次のようになります.
Html
sdkバージョンが4.2以上の場合はメソッドに追加する必要があります
@JavascriptInterface注入、4.2は必要ありません.
また、メソッドを呼び出すとandroid UIを直接変更することはできません.handlerを使って修正する必要がありますが、これは多くありません.
次はソースアドレスです.
http://download.csdn.net/detail/chinawszjr/8317391
public class MyActivity extends Activity {
private WebView Wv;
private TextView myTextView;
final Handler myHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Wv = (WebView)findViewById(R.id.webView1);
myTextView = (TextView)findViewById(R.id.textView1);
final JavaScriptInterface myJavaScriptInterface
= new JavaScriptInterface(this);
Wv.getSettings().setLightTouchEnabled(true);
Wv.getSettings().setJavaScriptEnabled(true);
Wv.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
Wv.loadUrl("file:///android_asset/javascriptTestHtml.html");
}
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(String webMessage){
final String msgeToast = webMessage;
myHandler.post(new Runnable() {
@Override
public void run() {
// This gets executed on the UI thread so it can safely modify Views
myTextView.setText(msgeToast);
}
});
Toast.makeText(mContext, webMessage, Toast.LENGTH_SHORT).show();
}
}
}
Html
function init()
{
var testVal = document.getElementById('mytextId').value;
AndroidFunction.showToast(testVal);
}
sdkバージョンが4.2以上の場合はメソッドに追加する必要があります
@JavascriptInterface注入、4.2は必要ありません.
また、メソッドを呼び出すとandroid UIを直接変更することはできません.handlerを使って修正する必要がありますが、これは多くありません.
次はソースアドレスです.
http://download.csdn.net/detail/chinawszjr/8317391