項目中嵌入了H5 頁面,這個時候就需要拿到H5 input中的內容進行數據傳遞,先看實現的效果圖
這就是實現的效果,頁面效果什么的可以忽略不計了,主要看功能,下面貼代碼
首先看MainActivity的布局,很簡單,就是一個WebView
<WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/ll_top" />
然后是網頁內容,這個網頁內容,一般的是你們前端給你們寫的 ,只是你們兩個人確定好方法就可以,這里我直接放在本地了
<!DOCTYPE > <html xmlns="http://www.w3.org/1999/xhtml" debug="true"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="target-densitydpi=device-dpi"/> <script type="text/javascript"> function init() { var testVal = document.getElementById('mytextId').value; AndroidFunction.showToast(testVal); } </script> </head> <body> <div style="float: left;width: 50%;"> <input type="text" style="width: 180px;" name="myText" id="mytextId"/> </div> <div style="clear: both;height: 3px;"></div> <div> <input value="submit" type="button" name="submit" id="btnSubmit" onclick="javascript:return init();"/> </div> </body> </html>
再就是MainActivity.java的具體實現和方法
public class MainActivity2 extends AppCompatActivity { private WebView webView; private LinearLayout ll_root; private EditText et_user; private ImageView iv_btn_return; final Handler myHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_user = (EditText) findViewById(R.id.et_user); webView = (WebView) findViewById(R.id.webView); initWebView(); } //初始化WebView private void initWebView() { //不跳轉到其他瀏覽器 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this); webView.getSettings().setLightTouchEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction"); webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall2.html"); } //按鈕的點擊事件 public void click(View view) { } //在頁面銷毀的時候將webView移除 @Override protected void onDestroy() { super.onDestroy(); // ll_root.removeView(webView); webView.stopLoading(); webView.removeAllViews(); webView.destroy(); webView = null; } 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 Log.e("toast", "msgToast:" + msgeToast); Toast.makeText(mContext, "msgToast:" + msgeToast, Toast.LENGTH_SHORT).show(); } }); Toast.makeText(mContext, webMessage, Toast.LENGTH_SHORT).show(); } } }
此博客不太規范,也沒有進行排版美化,僅用來記錄自己工作中的問題和學習使用