Radiant Δημοσ. 9 Ιουνίου 2015 Δημοσ. 9 Ιουνίου 2015 Άλλαξε τον 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); } }); Πηγή: Need help launching android youtube intent reciever from Webview
Moderators Spect~ Δημοσ. 9 Ιουνίου 2015 Μέλος Moderators Δημοσ. 9 Ιουνίου 2015 θα το δοκιμασω μετα και θα ενημερωσω!!! ΕΥχαριστω! 1
Moderators Spect~ Δημοσ. 9 Ιουνίου 2015 Μέλος Moderators Δημοσ. 9 Ιουνίου 2015 λοιπον το δοκιμασα και αυτο που κανει ειναι οταν παταω σε καποιο λινκ αντι να το ανοιξει σε webview μεσα στην εφαρμογη που ανοιγει το λινκ στον chrome!
Radiant Δημοσ. 9 Ιουνίου 2015 Δημοσ. 9 Ιουνίου 2015 λοιπον το δοκιμασα και αυτο που κανει ειναι οταν παταω σε καποιο λινκ αντι να το ανοιξει σε webview μεσα στην εφαρμογη που ανοιγει το λινκ στον chrome! Αυτό γίνεται γιατί έχεις ορίσει ως προεπιλεγμενο app να σου ανοίγει το chrome. Είτε από ρυθμισεις->εφαρμογες->chrome->εκκαθάριση προεπιλογων, είτε ψάξε stackoverflow πως να μην λαβεις υπόψιν τις προεπιλεγμενες εφαρμογές μέσω java(γινεται).
Moderators Spect~ Δημοσ. 9 Ιουνίου 2015 Μέλος Moderators Δημοσ. 9 Ιουνίου 2015 Περιμενε. το listview ειναι γεματο με λινκς απο ποστ του blog. Οταν παταω κανονικα ανοιγει ενα webview με το ποστ που επελεξα και μεσα μπορει να εχει και βιντεο. εγω θελω αφου ανοιξει το ποστ μεσα στην εφαρμογη αν πατησω στο βιντεο να το ανοιξει στην εφαρμογη. Με το javascript που εβαλες μου ανοιγει απευθειας το ποστ στον chrome και οχι μεσα στην εφαρμογη.
Radiant Δημοσ. 9 Ιουνίου 2015 Δημοσ. 9 Ιουνίου 2015 Εγώ σου έδωσα τη λύση, εσύ πρέπει να την προσαρμόσεις! Άλλαξε λοιπόν τη μέθοδο 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 Spect~ Δημοσ. 9 Ιουνίου 2015 Μέλος Moderators Δημοσ. 9 Ιουνίου 2015 Μισο γιατι ή εσυ εχεις μπερδευτει ή εγω ολα τα λινκ που ανοιγουν ειναι αυτης της μορφη "http://manicside.blogspot.gr/2015/01/.." Αν καταλαβα καλα η λυση που γραφεις απο πανω ειναι στην περιπτωση που πας να φορτωσεις απο την αρχη καποιο λινκ διαφορετικο απο αυτο που θες. Δηλαδη αντι να ειναι της μορφης "manicside.blogspot..." να ειναι "www.google.gr/.." τοτε θα λειτουργησει αυτο που λες. Σωστα? Εμενα ομως ολα μου τα λινκ ειναι τα ιδια και θελω οταν εχει ΗΔΗ φορτωσει το webview και πατησω στο βιντεο να το ανοιξει αλλου!
Moderators Spect~ Δημοσ. 10 Ιουνίου 2015 Μέλος Moderators Δημοσ. 10 Ιουνίου 2015 λοιπον αυτο που εκανα ειναι το εξης 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 και βλεπουμε. Αν γραψουν παλι τιποτα για παραβιαση θα τους στειλω μαιλ γιατι τωρα δεν παιζει τιποτα στην εφαρμογη! ευχαριστω για τη βοηθεια
Radiant Δημοσ. 13 Ιουνίου 2015 Δημοσ. 13 Ιουνίου 2015 λοιπον αυτο που εκανα ειναι το εξης 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 Spect~ Δημοσ. 14 Ιουνίου 2015 Μέλος Moderators Δημοσ. 14 Ιουνίου 2015 ναι ανεβηκε κανονικα. Εκανα και ενα appeal και τους εγραψα οτι πλεον ανοιγουν ολα σε εξωτερικο player και κομπλε την εβαλα μεσα στην shouldOverrideUrlLoading. 1
Radiant Δημοσ. 15 Ιουνίου 2015 Δημοσ. 15 Ιουνίου 2015 Ωραία τότε. Το μόνο που με προβληματίζει είναι αυτό το setContetntView μέσα στο shouldOverrideUrlLoading(). Δε νομίζω ότι είναι ορθή η χρήση της setContentView σε αυτό το σημείο εννοώ.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα