open external links from local resources in browser

This commit is contained in:
slymax 2020-03-23 23:38:54 +01:00
parent e3868a45cb
commit 4ceebd34d3
4 changed files with 7 additions and 12 deletions

View File

@ -8,24 +8,23 @@ This is a template project for Android Studio that allows you to create an andro
If you want to create an app that displays the content of a remote website If you want to create an app that displays the content of a remote website
1. uncomment lines **25** and **26** in `MainActivity.java` and replace `http://example.com` with your remote source 1. uncomment line **24** in `MainActivity.java` and replace `http://example.com` with your remote source
```java ```java
mWebView.loadUrl("https://example.com"); mWebView.loadUrl("https://example.com");
mWebView.setWebViewClient(new MyWebViewClient());
``` ```
2. open the `MyWebViewClient.java` file and replace `example.com` on line **14** with your custom hostname 2. open the `MyWebViewClient.java` file and replace `example.com` on line **13** with your custom hostname
```java ```java
if (Objects.requireNonNull(Uri.parse(url).getHost()).endsWith(".example.com")) { if (url.startsWith("file:") || uri.getHost() != null && uri.getHost().endsWith("example.com")) {
``` ```
### Using a local source ### Using a local source
If you want to create a local HTML5 android app If you want to create a local HTML5 android app
1. uncomment line **29** in `MainActivity.java` 1. uncomment line **27** in `MainActivity.java`
```java ```java
mWebView.loadUrl("file:///android_asset/index.html"); mWebView.loadUrl("file:///android_asset/index.html");

View File

@ -8,4 +8,4 @@
<body style="font-family: monospace"> <body style="font-family: monospace">
REPLACE THIS FILE WITH YOUR OWN INDEX.HTML REPLACE THIS FILE WITH YOUR OWN INDEX.HTML
</body> </body>
</html> </html>

View File

@ -5,7 +5,6 @@ import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity { public class MainActivity extends Activity {
@ -17,13 +16,12 @@ public class MainActivity extends Activity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.activity_main_webview); mWebView = findViewById(R.id.activity_main_webview);
mWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = mWebView.getSettings(); WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new MyWebViewClient());
// REMOTE RESOURCE // REMOTE RESOURCE
// mWebView.loadUrl("https://example.com"); // mWebView.loadUrl("https://example.com");
// mWebView.setWebViewClient(new MyWebViewClient());
// LOCAL RESOURCE // LOCAL RESOURCE
// mWebView.loadUrl("file:///android_asset/index.html"); // mWebView.loadUrl("file:///android_asset/index.html");

View File

@ -5,16 +5,14 @@ import android.net.Uri;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
@SuppressWarnings("unused")
class MyWebViewClient extends WebViewClient { class MyWebViewClient extends WebViewClient {
@Override @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse(url); Uri uri = Uri.parse(url);
if (uri.getHost() != null && uri.getHost().endsWith(".example.com")) { if (url.startsWith("file:") || uri.getHost() != null && uri.getHost().endsWith("example.com")) {
return false; return false;
} }
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent); view.getContext().startActivity(intent);
return true; return true;