瀏覽代碼

Merge pull request #904 from nextcloud/customErrorWebView

ability to show custom error message for webview
Mario Đanić 8 年之前
父節點
當前提交
e9dc702dfc

+ 5 - 0
src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -337,6 +337,11 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
                 }
                 return false;
             }
+
+            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+
+                mLoginWebView.loadData(DisplayUtils.getData(getResources().openRawResource(R.raw.custom_error)),"text/html; charset=UTF-8", null);
+            }
         });
     }
 

+ 5 - 4
src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java

@@ -32,11 +32,11 @@ import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.ProgressBar;
-import android.widget.Toast;
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.utils.DisplayUtils;
 
 /**
  * This activity shows an URL as a web view
@@ -52,6 +52,7 @@ public class ExternalSiteWebView extends FileActivity {
 
     private boolean showSidebar = false;
     private int menuItemId;
+    private WebView webview;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -69,8 +70,8 @@ public class ExternalSiteWebView extends FileActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.externalsite_webview);
 
-        WebView webview = (WebView) findViewById(R.id.webView);
-        WebSettings webSettings = webview.getSettings();
+        webview = (WebView) findViewById(R.id.webView);
+        final WebSettings webSettings = webview.getSettings();
 
         webview.setFocusable(true);
         webview.setFocusableInTouchMode(true);
@@ -122,7 +123,7 @@ public class ExternalSiteWebView extends FileActivity {
 
         webview.setWebViewClient(new WebViewClient() {
             public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
-                Toast.makeText(activity, getString(R.string.webview_error) + ": " + description, Toast.LENGTH_SHORT).show();
+                webview.loadData(DisplayUtils.getData(getResources().openRawResource(R.raw.custom_error)),"text/html; charset=UTF-8", null);
             }
         });
 

+ 26 - 0
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -81,7 +81,10 @@ import com.owncloud.android.utils.svg.SvgDrawableTranscoder;
 import org.greenrobot.eventbus.EventBus;
 import org.parceler.Parcels;
 
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.net.IDN;
 import java.text.DateFormat;
@@ -647,4 +650,27 @@ public class DisplayUtils {
             activity.startActivity(recentlyAddedIntent);
         }
     }
+
+
+    /**
+     * Get String data from a InputStream
+     *
+     * @param inputStream        The File InputStream
+     */
+    public static String getData(InputStream inputStream){
+
+        BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputStream));
+        String line;
+        StringBuilder text = new StringBuilder();
+        try {
+            while (( line = buffreader.readLine()) != null) {
+                text.append(line);
+                text.append('\n');
+            }
+        } catch (IOException e) {
+            Log_OC.e(TAG,e.getMessage());
+        }
+        return text.toString();
+    }
+
 }

+ 4 - 0
src/main/res/raw/custom_error.html

@@ -0,0 +1,4 @@
+<html>
+<h1>Sorry</h1>
+Modified
+</html>