Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Άλλαξε τον webViewClient  ώστε να φιλτράρει μέσω javascript αν όταν πατάς το play πρόκειται για ένα youtube iframe(embedded youtube δηλαδή).  Το παρακάτω το τέσταρα στον κώδικα σου και δουλεύει: 

myWebView.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }

            @Override
            public void onPageFinished(final WebView view, String url) {
                String javascript = "javascript:" +
                        "var iframes = document.getElementsByTagName('iframe');" +
                        "for (var i = 0, l = iframes.length; i < l; i++) {" +
                        "   var iframe = iframes[i]," +
                        "   a = document.createElement('a');" +
                        "   a.setAttribute('href', iframe.src);" +
                        "   d = document.createElement('div');" +
                        "   d.style.width = iframe.offsetWidth + 'px';" +
                        "   d.style.height = iframe.offsetHeight + 'px';" +
                        "   d.style.top = iframe.offsetTop + 'px';" +
                        "   d.style.left = iframe.offsetLeft + 'px';" +
                        "   d.style.position = 'absolute';" +
                        "   d.style.opacity = '0';" +
                        "   d.style.filter = 'alpha(opacity=0)';" +
                        "   d.style.background = 'black';" +
                        "   a.appendChild(d);" +
                        "   iframe.offsetParent.appendChild(a);" +
                        "}";
                view.loadUrl(javascript);

                super.onPageFinished(view, url);
            }
        });

Source.png Πηγή: Need help launching android youtube intent reciever from Webview

  • Moderators
Δημοσ.

λοιπον το δοκιμασα και αυτο που κανει ειναι οταν παταω σε καποιο λινκ αντι να το ανοιξει σε webview μεσα στην εφαρμογη που ανοιγει το λινκ στον chrome!

Δημοσ.

λοιπον το δοκιμασα και αυτο που κανει ειναι οταν παταω σε καποιο λινκ αντι να το ανοιξει σε webview μεσα στην εφαρμογη που ανοιγει το λινκ στον chrome!

Αυτό γίνεται γιατί έχεις ορίσει ως προεπιλεγμενο app να σου ανοίγει το chrome. Είτε από ρυθμισεις->εφαρμογες->chrome->εκκαθάριση προεπιλογων, είτε ψάξε stackoverflow πως να μην λαβεις υπόψιν τις προεπιλεγμενες εφαρμογές μέσω java(γινεται).

  • Moderators
Δημοσ.

Περιμενε. το listview ειναι γεματο με λινκς απο ποστ του blog. Οταν παταω κανονικα ανοιγει ενα webview με το ποστ που επελεξα και μεσα μπορει να εχει και βιντεο. εγω θελω αφου ανοιξει το ποστ μεσα στην εφαρμογη αν πατησω στο βιντεο να το ανοιξει στην εφαρμογη.

 

Με το javascript που εβαλες μου ανοιγει απευθειας το ποστ στον chrome και οχι μεσα στην εφαρμογη.

Δημοσ.

Εγώ σου έδωσα τη λύση, εσύ πρέπει να την προσαρμόσεις! Άλλαξε λοιπόν τη μέθοδο shouldOverrideUrlLoading του webViewClient ώς εξής: 

public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }

Άλλαξε το "www.example.com" με το domain του blog σου. Και βασικό διάβασε τον επίσημο οδηγό από το site. Και πάλι θα πρέπει να το προσαρμόσεις γιατι τα βίντεο βρίσκονται στο blog σου. Αν δε το κάνεις λογικά θα παίζει τα βίντεο μέσα στο webview.

  • Moderators
Δημοσ.

Μισο γιατι ή εσυ εχεις μπερδευτει ή εγω :P

 

ολα τα λινκ που ανοιγουν ειναι αυτης της μορφη "http://manicside.blogspot.gr/2015/01/.."

 

Αν καταλαβα καλα η λυση που γραφεις απο πανω ειναι στην περιπτωση που πας να φορτωσεις απο την αρχη καποιο λινκ διαφορετικο απο αυτο που θες. Δηλαδη αντι να ειναι της μορφης "manicside.blogspot..." να ειναι "www.google.gr/.." τοτε θα λειτουργησει αυτο που λες. Σωστα?

 

Εμενα  ομως ολα μου τα λινκ ειναι τα ιδια και θελω οταν εχει ΗΔΗ φορτωσει το webview και πατησω στο βιντεο να το ανοιξει αλλου!

 

  • Moderators
Δημοσ.

λοιπον αυτο που εκανα ειναι το εξης

 

 

 

if (url.contains("manicside") ){
                myWebView.loadUrl(url);
                setContentView(myWebView);
                return true;
                }
                    else {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }

 

 

οποτε οταν φορτωνει λινκ απο το μπλογκ ανοιγει κανονικα οταν παει να ανοιξει φωτογραφια,youtube,vimeo και γενικα οτιδηποτε αλλο το κανει redirect στην αντιστοιχη εφαρμογη! Την ανεβαζω playstore και βλεπουμε. Αν γραψουν παλι τιποτα για παραβιαση θα τους στειλω μαιλ γιατι τωρα δεν παιζει τιποτα στην εφαρμογη!

 

ευχαριστω για τη βοηθεια

Δημοσ.

λοιπον αυτο που εκανα ειναι το εξης

 

 

 

if (url.contains("manicside") ){
                myWebView.loadUrl(url);
                setContentView(myWebView);
                return true;
                }
                    else {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }

 

 

οποτε οταν φορτωνει λινκ απο το μπλογκ ανοιγει κανονικα οταν παει να ανοιξει φωτογραφια,youtube,vimeo και γενικα οτιδηποτε αλλο το κανει redirect στην αντιστοιχη εφαρμογη! Την ανεβαζω playstore και βλεπουμε. Αν γραψουν παλι τιποτα για παραβιαση θα τους στειλω μαιλ γιατι τωρα δεν παιζει τιποτα στην εφαρμογη!

 

ευχαριστω για τη βοηθεια

 

Καλησπέρα, που το έβαλες το block αυτό; Στη μέθοδο που συζηταγαμε παραπάνω; 

edit: Τελικά κατάφερες να το ανεβάσεις;

  • Moderators
Δημοσ.

ναι ανεβηκε κανονικα. Εκανα και ενα appeal και τους εγραψα οτι πλεον ανοιγουν ολα σε εξωτερικο player και κομπλε

την εβαλα μεσα στην shouldOverrideUrlLoading.

  • Like 1
Δημοσ.

Ωραία τότε. Το μόνο που με προβληματίζει είναι αυτό το setContetntView μέσα στο shouldOverrideUrlLoading(). Δε νομίζω ότι είναι ορθή η χρήση της setContentView σε αυτό το σημείο εννοώ. 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...