forked from octocat/Spoon-Knife
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainActivity.java
116 lines (97 loc) · 4.1 KB
/
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.harlan.demo.activity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private final String JSON_STR = "{\"Developer\":\"Harlan\",\"Place\":\"Nanjing\"}";
private WebView mWebView;
private Handler mHandler = new Handler();
private Button mBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.myweb);
mBtn = (Button) findViewById(R.id.mybtn);
initWebView();
}
// ===================================================================================================================
//
// ===================================================================================================================
private void initWebView() {
/*
* webSettings 保存着WebView中的状态信息。 当WebView第一次被创建时,webSetting中存储的都为默认值。
* WebSetting和WebView一一绑定的。 如果webView被销毁了,那么我们再次调用webSetting中的方法时,会抛出异常。
*/
WebSettings webSettings = mWebView.getSettings();
// 允许在webview中执行JavaScript代码
webSettings.setJavaScriptEnabled(true);
// 设置webview是否支持缩放
webSettings.setSupportZoom(false);
// 加载本地html代码,此代码位于assets目录下,通过file:///android_asset/jsdroid.html访问。
// mWebView.loadUrl("file:///android_asset/jsdroid.html");
// mWebView.loadUrl("http://www.sina.com");
mWebView.loadUrl("http://112.65.235.26/passport/register?phone=13795289631");
// ===========================
//
// ===========================
Log.v(TAG, "设置js访问android的方法,使用addJavascriptInterface,在线程:"
+ Thread.currentThread().getName());
mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
// ===========================
//
// ===========================
Log.v(TAG, "设置WebView是否跳转到其他的页面");
mWebView.setWebViewClient(new HarlanWebViewClient(this));
// ===========================
// 拦截
// ===========================
/**
* 这两个方法也不能让js点击之后显示对话框
* */
// webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
// webSettings.setSupportMultipleWindows(true);
mWebView.setWebChromeClient(new HarlanWebChromeClient(this));
// ===========================
// 从Java代码调用js的方法
// ===========================
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Android调用了js方法");
/*
* 通过webView.loadUrl("javascript:xxx")方式就可以调用当前网页中的名称
* 为xxx的javascript方法
*/
mWebView.loadUrl("javascript:info(" + JSON_STR + ")");
}
});
}
// ===================================================================================================================
//
// ===================================================================================================================
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
// If it wasn't the Back key or there's no web page history, bubble up
// to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
// ===================================================================================================================
//
// ===================================================================================================================
}