Androidは5分でWebViewとjsのインタラクションを簡単に教えてくれます
2186 ワード
背景:Android APIでは、htmlのレンダリングを実現するためにWebViewコンポーネントが提供されています.現在、HTML 5、CSS 3、jSに関する開発技術、およびデータ交換フォーマットjson/XMLがある.Web開発エンジニアのスキル.Androidへの過度な依存を減らすために、通常は原生のAndroid埋め込み部分のhtmlになります.
これによりjsデータのインタラクションが回避されない.
簡単なレイアウトを新規作成し、webviewコントロールが1つしかありません.
このwebViewを見つけて、ローカルのmainをアップロードします.html、main.htmlは、エンジニアリングファイルのassetsルートディレクトリに格納されます. js呼び出しAndroidメソッド 注意深いあなたは上にJSObject類があることに気づくべきで、間違いなく、これが入り口を開けて、フロントエンドjsは私たちのAndroidのこちらに書く方法を呼び出すことができます.その中の「aikaifa」は表示として理解でき、好きなように変更することができます.
JSObjectというクラスを見てみましょう.
このクラスはgoBackメソッドを定義し,注入JSは呼び出すことができる.jsはgoBackというメソッドを呼び出したい場合.このaikaifa.goBack()はこのように呼び出せばよい.これでフロントエンドはAndroid側の方法を簡単に呼び出すことができます. Android呼び出しJSメソッド jsが私たちのメソッドを呼び出すことができる以上、私たちもjsメソッドを呼び出すことができます.
たとえば、jsのgetNameメソッドを呼び出します.
私たちはこのように書くことができます.
ここでgetNameメソッドはjsのメソッドの1つであり、必要な場所でgetTestJSメソッドを呼び出せばよい.これでWebViewとjsのインタラクションはほぼ完了します.
これによりjsデータのインタラクションが回避されない.
簡単なレイアウトを新規作成し、webviewコントロールが1つしかありません.
このwebViewを見つけて、ローカルのmainをアップロードします.html、main.htmlは、エンジニアリングファイルのassetsルートディレクトリに格納されます.
WebView webView = (WebView) findViewById(R.id.webView);
webView.addJavascriptInterface(newJSObject(context), "aikaifa");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);// js
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
webView.loadUrl("file:///android_asset/main.html");
}
}, 500);
JSObjectというクラスを見てみましょう.
public class JSObject {
private Context context;
public JSObject(Context context){
this.context=context;
}
@JavascriptInterface
public void goBack({
Activity activity = (Activity) context;
activity.finish();
}
}
このクラスはgoBackメソッドを定義し,注入JSは呼び出すことができる.jsはgoBackというメソッドを呼び出したい場合.このaikaifa.goBack()はこのように呼び出せばよい.これでフロントエンドはAndroid側の方法を簡単に呼び出すことができます.
たとえば、jsのgetNameメソッドを呼び出します.
私たちはこのように書くことができます.
public void getTestJS()
{
Timertimer = new Timer();
final Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
webView.loadUrl("javascript:getName()");
break;
}
super.handleMessage(msg);
}
};
timer.schedule(new TimerTask() {
public void run() {
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
}, 500, 500);
}
ここでgetNameメソッドはjsのメソッドの1つであり、必要な場所でgetTestJSメソッドを呼び出せばよい.これでWebViewとjsのインタラクションはほぼ完了します.