Skip to content

Commit 1f3c97e

Browse files
committed
-------------------------update---------------------
版本编号:0.0.6 更新时间:2017-10-10 新增内容: 更新内容: 1.优化WebView返回键监听(针对主界面返回特殊处理)
1 parent 59c3fb7 commit 1f3c97e

3 files changed

Lines changed: 43 additions & 23 deletions

File tree

README

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,9 @@ MyToastView
6868
更新内容:
6969
1.优化WebView加载URL,支持H5调用微信、拨打电话
7070

71+
-------------------------update---------------------
72+
版本编号:0.0.6
73+
更新时间:2017-10-10
74+
新增内容:
75+
更新内容:
76+
1.优化WebView返回键监听(针对主界面返回特殊处理)

app/src/main/java/com/tools/utils/AppManagerUtil.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ public void killActivity(Class<?> cls) {
116116
* 结束所有Activity
117117
*/
118118
public void killAllActivity() {
119+
if (mActivityStack == null) {
120+
return;
121+
}
119122
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
120123
if (null != mActivityStack.get(i)) {
121124
mActivityStack.get(i).finish();

app/src/main/java/com/tools/view/webview/MyWebView.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.webkit.WebSettings;
1313
import android.widget.LinearLayout;
1414

15+
import com.tools.utils.LogUtil;
1516
import com.tools.view.webview.JsBridge.BridgeHandler;
1617
import com.tools.view.webview.JsBridge.BridgeWebView;
1718
import com.tools.view.webview.JsBridge.CallBackFunction;
@@ -39,6 +40,7 @@ public class MyWebView extends LinearLayout {
3940
private MyCallBack mMyCallBack;
4041
private MyWebViewClient mMyWebViewClient;
4142
private MyWebChromeClient mMyWebChromeClient;
43+
private goBackListener mGoBackListener;
4244
private List<String> mainPages;
4345

4446
public MyWebView(Context context) {
@@ -90,49 +92,58 @@ public void init(Context context, String url, MyCallBack myCallBack) {
9092

9193
addView(mWebView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
9294

93-
//返回键监听
95+
//返回键监听 主界面返回提醒
9496
mWebView.setOnKeyListener(new OnKeyListener() {
9597
@Override
9698
public boolean onKey(View view, int i, KeyEvent keyEvent) {
97-
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
98-
if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK) {
99-
//如果当前url是主界面 提示退出程序 并且处理返回键
100-
boolean isBack = true;//是否可以返回上一个界面
101-
if (mainPages != null && mainPages.size() >= 0) {
102-
String curUrl = mWebView.getUrl();
103-
for (String url : mainPages) {
104-
if (curUrl.equals(url)) {
105-
isBack = false;
106-
break;
107-
}
99+
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK) {
100+
//如果当前url是主界面 提示退出程序 并且处理返回键
101+
boolean isBack = true;//是否可以返回上一个界面
102+
if (mainPages != null && mainPages.size() >= 0) {
103+
String curUrl = mWebView.getUrl();
104+
LogUtil.i("curUrl: " + curUrl);
105+
for (String url : mainPages) {
106+
if (curUrl.contains(url)) {
107+
isBack = false;
108+
break;
108109
}
109110
}
110-
if (isBack && mWebView.canGoBack()) {
111-
//不能返回,mWebView能够回退 则webview处理返回事件
112-
mWebView.goBack();
113-
return true;
114-
} else {
115-
//可以返回 具体返回操作在activity中处理
116-
// exitApp();//连按两次退出app
117-
return false;
111+
}
112+
if (isBack && mWebView.canGoBack()) {
113+
mWebView.goBack();
114+
if (mGoBackListener != null) {
115+
mGoBackListener.goBack(false);
116+
}
117+
} else {
118+
//连按两次退出app
119+
if (mGoBackListener != null) {
120+
mGoBackListener.goBack(true);
118121
}
119122
}
120123
}
121124
return false;
122125
}
123126
});
124-
125-
loadUrl(url);
127+
loadUrl(url);//load
126128
}
127129

128130

129131
/**
130132
* 添加首页url 控制返回
131133
*
132134
* @param pages
135+
* @param goBackListener
133136
*/
134-
public void addMainPage(List<String> pages) {
137+
public void addMainPage(List<String> pages, goBackListener goBackListener) {
135138
mainPages = pages;
139+
mGoBackListener = goBackListener;
140+
}
141+
142+
/**
143+
* 监听是否退出程序
144+
*/
145+
public interface goBackListener {
146+
void goBack(boolean isExitApp);
136147
}
137148

138149
public BridgeWebView getWebView() {

0 commit comments

Comments
 (0)