Skip to content
This repository was archived by the owner on Feb 2, 2021. It is now read-only.

Commit 6dd24f5

Browse files
committed
Go page back in webview instead closing app (#7)
1 parent d280be1 commit 6dd24f5

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

app/src/main/java/de/codebucket/mkkm/KKMWebviewClient.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@
44
import android.content.res.AssetManager;
55
import android.graphics.Bitmap;
66
import android.util.Log;
7+
import android.view.MenuItem;
78
import android.webkit.JavascriptInterface;
89
import android.webkit.WebView;
910
import android.webkit.WebViewClient;
1011

11-
import com.google.android.material.navigation.NavigationView;
12-
1312
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
1413

14+
import com.google.android.material.navigation.NavigationView;
15+
1516
import java.io.ByteArrayOutputStream;
1617
import java.io.IOException;
1718
import java.io.InputStream;
19+
import java.util.HashMap;
20+
import java.util.Map;
1821

1922
import de.codebucket.mkkm.ui.MainActivity;
2023

@@ -28,6 +31,17 @@ public class KKMWebviewClient extends WebViewClient {
2831
private NavigationView mNavigationView;
2932

3033
private boolean hasInjected = false;
34+
private Map<String, Integer> navIds = new HashMap<String, Integer>(){{
35+
// R.id.nav_tickets
36+
put("home", R.id.nav_tickets);
37+
put("control", R.id.nav_tickets);
38+
39+
// R.id.nav_purchase
40+
put("ticket", R.id.nav_purchase);
41+
42+
// R.id.nav_account
43+
put("account", R.id.nav_account);
44+
}};
3145

3246
public KKMWebviewClient(MainActivity context) {
3347
mContext = context;
@@ -40,6 +54,11 @@ public void onPageStarted(WebView view, String url, Bitmap favicon) {
4054
super.onPageStarted(view, url, favicon);
4155
mSwipeLayout.setEnabled(true);
4256
mSwipeLayout.setRefreshing(true);
57+
58+
// Reset injection if url is webapp
59+
if (url.startsWith(WEBAPP_URL)) {
60+
hasInjected = false;
61+
}
4362
}
4463

4564
@Override
@@ -75,6 +94,16 @@ public void onPageFinished(WebView view, String url) {
7594
view.addJavascriptInterface(new ScriptInjectorCallback(), "ScriptInjector");
7695
view.evaluateJavascript(inject, null);
7796
}
97+
98+
// Set navigation item if page has changed
99+
String key = url.substring(WEBAPP_URL.length() + 4).split("/")[0];
100+
if (navIds.containsKey(key)) {
101+
MenuItem item = mNavigationView.getMenu().findItem(navIds.get(key));
102+
if (item != null && !item.isChecked()) {
103+
((MainActivity) mContext).setTitle(item.getTitle());
104+
mNavigationView.setCheckedItem(item);
105+
}
106+
}
78107
}
79108

80109
public static String getPageUrl(String page) {

app/src/main/java/de/codebucket/mkkm/ui/MainActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@ public void onBackPressed() {
123123
return;
124124
}
125125

126+
if (mWebview.canGoBack()) {
127+
mWebview.goBack();
128+
return;
129+
}
130+
126131
if (mBackPressed + TIME_INTERVAL < System.currentTimeMillis()) {
127132
Toast.makeText(this, R.string.press_back_again, Toast.LENGTH_SHORT).show();
128133
mBackPressed = System.currentTimeMillis();

0 commit comments

Comments
 (0)