Android Appcelerator Get URL from remote URL in webview and open it in devices default browser or a new webview

ER-AK

My question is exactly the same as this one but for Android and not iOS.

Get URL from remote URL in webview and open it in safari

Anyone have an idea. I am creating a cross-platform app and I have used the Clayton's answer to get it to work for iOS with some tweaks to open with a controller. But when trying different methods on Android and it is not working. This is as close as I have gotten (which is what Aaron provided on that same page) and it is not quite right as it opens the remote web page in a new browser window as well in the apps webview:

$.floorView.addEventListener('load', function(e) {
    if (e.url.indexOf("http") !== -1) {
         // stop the event
         e.bubble = false;

         // stop the url from loading
         $.floorView.stopLoading();

         // open 
        Ti.Platform.openURL(e.url);
    }
});

Thanks!

ER-AK

I think I may have figured it out. Thanks to those whose ideas and suggestions lead to this code.

It appears to be working as I want on iOS and Android. Any suggestions or issues that you guys have I would appreciate the feedback. Thanks!

if ("iOS") {    
$.webView.addEventListener('beforeload', function(e) {
    if (e.navigationType == Titanium.UI.iOS.WEBVIEW_NAVIGATIONTYPE_LINK_CLICKED) {
       // stop the event
        e.bubble = false;
       // stop the url from loading
       $.webView.stopLoading();
       //opens up the clicked URL for bill in new webView
        var link = e.url;
        var args = {url: link,};
        // open link in my default webView for iOS
        var newWebView=Alloy.createController('defaultWebView', args).getView();
        newWebView.open();
    }
});
}
else if ("Android") {
$.webView.addEventListener('beforeload', function(e) {
    if (e.url.indexOf("http") !== -1) {
        function Parser(text) {
            var html = text;
            var urlRegex = /((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
            this.getHTML = function() {
                return html;
             };   
        } // end Parser
        var parser = new Parser(e.url);
        html = parser.getHTML();     
        if (html != "url of $.webView") {
            // stop it from loding in current webView
            $.webView.stopLoading();    
            // open link in browser
            Ti.Platform.openURL(html);
        }
    }
});
}       
else {
.....................
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related