瀏覽代碼

Merge pull request #11799 from nextcloud/fix/texteditor-external-links

Fix external links in texteditor
Andy Scherzinger 2 年之前
父節點
當前提交
c26496874e

+ 5 - 15
app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java

@@ -86,7 +86,7 @@ public abstract class EditorWebView extends ExternalSiteWebView {
                 if (this.getWebView().getVisibility() != View.VISIBLE) {
                     Snackbar snackbar = DisplayUtils.createSnackbar(findViewById(android.R.id.content),
                                                                     R.string.timeout_richDocuments, Snackbar.LENGTH_INDEFINITE)
-                        .setAction(R.string.common_back, v -> closeView());
+                        .setAction(R.string.common_cancel, v -> closeView());
 
                     viewThemeUtils.material.themeSnackbar(snackbar);
                     setLoadingSnackbar(snackbar);
@@ -115,7 +115,7 @@ public abstract class EditorWebView extends ExternalSiteWebView {
         super.postOnCreate();
 
         getWebView().setWebChromeClient(new WebChromeClient() {
-            EditorWebView activity = EditorWebView.this;
+            final EditorWebView activity = EditorWebView.this;
 
             @Override
             public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
@@ -178,14 +178,8 @@ public abstract class EditorWebView extends ExternalSiteWebView {
     }
 
     protected void handleActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case REQUEST_LOCAL_FILE:
-                handleLocalFile(data, resultCode);
-                break;
-
-            default:
-                // unexpected, do nothing
-                break;
+        if (requestCode == REQUEST_LOCAL_FILE) {
+            handleLocalFile(data, resultCode);
         }
     }
 
@@ -251,7 +245,7 @@ public abstract class EditorWebView extends ExternalSiteWebView {
                 }
 
                 if ("image/png".equalsIgnoreCase(file.getMimeType())) {
-                    binding.thumbnail.setBackgroundColor(getResources().getColor(R.color.bg_default));
+                    binding.thumbnail.setBackgroundColor(getResources().getColor(R.color.bg_default, getTheme()));
                 }
             } else {
                 Drawable icon = MimeTypeUtil.getFileTypeIcon(file.getMimeType(),
@@ -278,10 +272,6 @@ public abstract class EditorWebView extends ExternalSiteWebView {
         downloadmanager.enqueue(request);
     }
 
-    public Snackbar getLoadingSnackbar() {
-        return this.loadingSnackbar;
-    }
-
     public void setLoadingSnackbar(Snackbar loadingSnackbar) {
         this.loadingSnackbar = loadingSnackbar;
     }

+ 14 - 10
app/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java

@@ -29,6 +29,8 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.Window;
 import android.webkit.WebChromeClient;
+import android.webkit.WebResourceError;
+import android.webkit.WebResourceRequest;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.widget.ProgressBar;
@@ -140,8 +142,9 @@ public class ExternalSiteWebView extends FileActivity {
             });
         }
 
+        final ExternalSiteWebView self = this;
         getWebView().setWebViewClient(new NextcloudWebViewClient(getSupportFragmentManager()) {
-            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                 InputStream resources = getResources().openRawResource(R.raw.custom_error);
                 String customError = DisplayUtils.getData(resources);
 
@@ -149,6 +152,12 @@ public class ExternalSiteWebView extends FileActivity {
                     getWebView().loadData(customError, "text/html; charset=UTF-8", null);
                 }
             }
+
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
+                DisplayUtils.startLinkIntent(self, request.getUrl());
+                return true;
+            }
         });
 
         getWebView().loadUrl(url);
@@ -187,8 +196,7 @@ public class ExternalSiteWebView extends FileActivity {
         // user agent
         webSettings.setUserAgentString(MainApp.getUserAgent());
 
-        // no private data storing
-        webSettings.setSavePassword(false);
+        // do not store private data
         webSettings.setSaveFormData(false);
 
         // disable local file access
@@ -200,7 +208,7 @@ public class ExternalSiteWebView extends FileActivity {
 
         // caching disabled in debug mode
         if ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
-            getWebView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
+            webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
         }
     }
 
@@ -219,8 +227,6 @@ public class ExternalSiteWebView extends FileActivity {
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        boolean retval;
-
         if (item.getItemId() == android.R.id.home) {
             if (showSidebar) {
                 if (isDrawerOpen()) {
@@ -231,12 +237,10 @@ public class ExternalSiteWebView extends FileActivity {
             } else {
                 finish();
             }
-            retval = true;
+            return true;
         } else {
-            retval = super.onOptionsItemSelected(item);
+            return super.onOptionsItemSelected(item);
         }
-
-        return retval;
     }
 
     @Override