Skip to content

Commit

Permalink
Added code to open the device's webbrowser based on webbrowser:// scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
Miggets7 committed Jun 24, 2019
1 parent d42ea13 commit 595c61d
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
Expand Up @@ -64,6 +64,7 @@
import java.util.logging.Logger;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

Expand Down Expand Up @@ -382,6 +383,19 @@ public void onPageFinished(WebView view, String url) {
webViewLoaded = true;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl().getScheme().equalsIgnoreCase("webbrowser")) {
String newUrl = request.getUrl().buildUpon().scheme("https").build().toString();
Intent i = new Intent(Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setData(Uri.parse(newUrl));
startActivity(i);
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}

protected void handleError(int errorCode, String description, String failingUrl, boolean isForMainFrame) {

LOG.warning("Error requesting '" + failingUrl + "': " + errorCode + "(" + description + ")");
Expand Down
31 changes: 31 additions & 0 deletions console/iOS/ORLib/ORLib/ORSchemeHandler.swift
@@ -0,0 +1,31 @@
//
// ORSchemeHandler.swift
// ORLib
//
// Created by Michael Rademaker on 24/06/2019.
//

import UIKit
import WebKit

class ORSchemeHandler: NSObject, WKURLSchemeHandler {

public static let browserScheme = "webbrowser"

func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
if let url = urlSchemeTask.request.url, url.scheme == ORSchemeHandler.browserScheme {
if var components = URLComponents(url: url, resolvingAgainstBaseURL: false) {
components.scheme = "https"
if let newUrl = components.url {
UIApplication.shared.open(newUrl)
}
}
urlSchemeTask.didReceive(URLResponse(url: url, mimeType: nil, expectedContentLength: -1, textEncodingName: nil))
urlSchemeTask.didFinish()
}
}

func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
urlSchemeTask.didFailWithError(WKError(WKError.unknown))
}
}
1 change: 1 addition & 0 deletions console/iOS/ORLib/ORLib/ORViewController.swift
Expand Up @@ -282,6 +282,7 @@ open class ORViewcontroller : UIViewController, URLSessionDelegate, WKScriptMess
} else {
sbHeight = UIApplication.shared.statusBarFrame.height
}
webCfg.setURLSchemeHandler(ORSchemeHandler(), forURLScheme: ORSchemeHandler.browserScheme)
let webFrame = CGRect(x : 0,y : sbHeight,width : view.frame.size.width,height : view.frame.size.height - sbHeight)
myWebView = WKWebView(frame: webFrame, configuration: webCfg)
myWebView?.autoresizingMask = [.flexibleWidth, .flexibleHeight];
Expand Down

0 comments on commit 595c61d

Please sign in to comment.