Skip to content

Commit

Permalink
open external links from local resources in browser
Browse files Browse the repository at this point in the history
  • Loading branch information
slymax committed Mar 23, 2020
1 parent e3868a4 commit 4ceebd3
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 12 deletions.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

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
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
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

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
mWebView.loadUrl("file:///android_asset/index.html");
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/assets/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
<body style="font-family: monospace">
REPLACE THIS FILE WITH YOUR OWN INDEX.HTML
</body>
</html>
</html>
4 changes: 1 addition & 3 deletions app/src/main/java/com/example/app/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

Expand All @@ -17,13 +16,12 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.activity_main_webview);
mWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new MyWebViewClient());

// REMOTE RESOURCE
// mWebView.loadUrl("https://example.com");
// mWebView.setWebViewClient(new MyWebViewClient());

// LOCAL RESOURCE
// mWebView.loadUrl("file:///android_asset/index.html");
Expand Down
4 changes: 1 addition & 3 deletions app/src/main/java/com/example/app/MyWebViewClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@
import android.webkit.WebView;
import android.webkit.WebViewClient;

@SuppressWarnings("unused")
class MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String 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;
}

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
Expand Down

0 comments on commit 4ceebd3

Please sign in to comment.