2 package com.hughes.android.dictionary;
4 import android.app.Activity;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.util.AttributeSet;
8 import android.util.Log;
9 import android.view.ContextMenu;
10 import android.webkit.WebView;
11 import android.webkit.WebViewClient;
13 import com.hughes.android.dictionary.engine.HtmlEntry;
14 import com.hughes.util.StringUtil;
16 public class MyWebView extends WebView {
18 private static final String LOG = "MyWebView";
20 HtmlDisplayActivity activity;
22 private static void quickdicUrlToIntent(final String url, final Intent intent) {
23 int firstColon = url.indexOf("?");
26 int secondColon = url.indexOf("&", firstColon + 1);
27 if (secondColon == -1)
29 intent.putExtra(C.SEARCH_TOKEN, StringUtil.decodeFromUrl(url.substring(secondColon + 1)));
32 public MyWebView(Context context) {
36 public MyWebView(Context context, AttributeSet attrs) {
37 super(context, attrs);
38 getSettings().setSupportZoom(true);
39 getSettings().setBuiltInZoomControls(true);
40 // TODO: check why AUTO does not work and consider using it (API 29/Android 10 only)
41 //getSettings().setForceDark(WebSettings.FORCE_DARK_ON);
43 final WebViewClient webViewClient = new WebViewClient() {
45 public boolean shouldOverrideUrlLoading(WebView view, String url) {
46 if (HtmlEntry.isQuickdicUrl(url)) {
47 Log.d(LOG, "Handling Quickdic URL: " + url);
48 final Intent result = new Intent();
49 quickdicUrlToIntent(url, result);
50 Log.d(LOG, "SEARCH_TOKEN=" + result.getStringExtra(C.SEARCH_TOKEN));
51 activity.setResult(Activity.RESULT_OK, result);
55 return super.shouldOverrideUrlLoading(view, url);
58 setWebViewClient(webViewClient);
62 public void onCreateContextMenu(ContextMenu menu) {
63 super.onCreateContextMenu(menu);