Naar content
Trending apps
  • Ouderlijk toezicht voor Nintendo Switch

  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

Trending games
  • Super Mario Run

  • RollerCoaster Tycoon® Classic

  • Bully: Anniversary Edition

  • Paper Wings

  • Pokémon GO

Trending smartphones
  • OnePlus 5

  • Honor 9

  • Samsung Galaxy J3 (2017)

  • HTC U11

  • Huawei P10

Nieuwste tablets
  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

  • Sony Xperia Z4 Tablet

  • ASUS ZenPad S 8

  • ASUS ZenPad 8

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #1
  • 12 juli 2016
  • 19:45

Ik heb 2 (bijna) gelijke apps. Allebei tonen ze de site van de Telegraaf.


Als ik nu een link open en ik klik op het bijbehorende filmpje, dan opent deze in de ene app wel
en in de andere niet.

Ik heb werkelijk van alles geprobeerd. Manifest aangepast, Webview aangepast enz., maar  niks helpt.

Nu kom ik net tot de ontdekking, dat het aanklikken van een link WEL zichtbaar wordt in de appcode (middels bv Toast), maar het aanklikken van het filmpje NIET.

Ik ga er dan ook van uit, dat het afhandelen van dat filmpje gebeurt in de code van die pagina en dat dit verder niks met mijn appcode te maken heeft.

Is er een stukje code die kan tonen wat de aangeroepen url van het filmpje is ?
Of heeft er iemand een andere Gouden oplossing ?


Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Sander

Sander

  • Lid sinds 23 september 2009
  • Berichten 407
  • Reputatie 30
  • AdminAdmin
  • #2
  • 13 juli 2016
  • 09:33

Gebruik je deze functie?

public boolean shouldOverrideUrlLoading(WebView view, String url){
// handle by yourself
return true;
}

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #3
  • 13 juli 2016
  • 09:48

//======================

        mWebView = (WebView) findViewById(R.id.webView);
        mWebView.getSettings().setLoadsImagesAutomatically(true);
        mWebView.getSettings().setDomStorageEnabled(true);
        WebSettings webSettings = mWebView.getSettings();
        mWebView.getSettings().setJavaScriptEnabled(true);
      //  mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
        mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
      //  webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setSupportMultipleWindows(false);
        mWebView.setWebViewClient(new HelloWebViewClient());
      //  mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.getSettings().setAllowFileAccess(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        webSettings.setPluginState(WebSettings.PluginState.ON);
        mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setLoadWithOverviewMode(true);
        if (actueleurl.length() < 4) {
            mWebView.loadUrl(defaultlink);
        } else {
            mWebView.loadUrl(actueleurl);
            recentelinken.add(actueleurl);
            //   Toast.makeText(this, "1-> " + actueleurl, Toast.LENGTH_SHORT).show();
        }



//================

en

   
private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            //Toast.makeText(Buttonbar.this, "(2) "+actueleurl , Toast.LENGTH_LONG).show();
            view.setWebChromeClient(mWebChromeClient);
            mWebView.setWebChromeClient(new WebChromeClient());        
        
                    mWebView.loadUrl(url);
                    actueleurl=url;
                    recentelinken.add(url);
               

                }}
            return true;


        }
    }

Bewerkt (13 juli 2016 10:13)

Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Sander

Sander

  • Lid sinds 23 september 2009
  • Berichten 407
  • Reputatie 30
  • AdminAdmin
  • #4
  • 13 juli 2016
  • 11:10

Wat is precies de bedoeling? Moet het filmpje laden in de WebView of extern?

Wat doe je precies in de shouldOverrideUrlLoading? Daar zet je eerst

view.setWebChromeClient(mWebChromeClient);
en daarna
mWebView.setWebChromeClient(newWebChromeClient());
en daarna maar die lijken mij naar dezelfde WebView te verwijzen. Als dat inderdaad zo is, kun je die tweede regel weglaten en kun je
mWebView.loadUrl(url);
veranderen in
view.loadUrl(url);
. Overigens is dat laatste niet eens nodig als je
return false;
opgeeft.

Het is in ieder geval niet handig om de WebChromeClient in te stellen in de 'shouldOverrideUrlLoading', omdat er dan bij elke geladen URL die client wordt ingesteld.

Bewerkt (13 juli 2016 11:11)
Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #5
  • 13 juli 2016
  • 11:37

Ik ga het vanavond eens proberen.

Ik weet dat er (voroal bovenin) heel veel extra info staat. Dat komt, omdat ik van alles aan het proberen ben en verschillende oplossingen van internet er in zet, in de hoop de juiste te vinden. Tot nu toe zonder resultaat.

Ik kan aardige apps maken, maar heb best wel veel moeite met het begrijpend lezen van de uitleg die men er vaak bij geeft. Veel te hoog gegrepen voor mij. ;-)

Het is de bedoeling dat het filmpje gewoon intern afspeelt.
Het zijn filmpjes die in een nieuwsbericht zitten.

Ik heb al wel ontdekt (middels logcat en toast), dat een aangeklikte url iets doet in de code, maar als ik het filmpje aanklik niet. Mijn conclusie is dan ook, dat die filmcode afgehandeld word in de (html)code van de geladen pagina.
Ik hoop dat ik het zo goed omschrijf.

Wat ik echt heel gek vind, dat ik 2 bijna identieke apps heb, maar dat de ene het wel goed doet en de andere niet.

Deze doet het niet goed: https://play.google.com/store/apps/details?id=nl.peter.blue.ireader
Deze doet het wel goed: https://play.google.com/store/apps/details?id=nl.peter.blue.bookmarks
(Bookmarks is een betaalde app, als je wilt stuur ik je de app gratis toe)

Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #6
  • 13 juli 2016
  • 19:28

Nee, heeft helaas allemaal niet mogen baten.

Frustrerend !!

Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #7
  • 13 juli 2016
  • 22:07

Ik heb de werkende app terug weten te brengen tot 1 Class. (Mainactivity) Zoveel mogelijk gestript.
Vervolgens overgezet naar de andere app en daar werkte het (gelukkig)  ook !!.

Hieronder de wekrende code.
Ik heb gen idee wat hier nu zo speciaal aan is en waarom die andere het niet doet. Ergens zit het verschil, maar waar.

Maar goed, als het werkt, dan bouw ik de app wel weer opnieuw op vanuit de werkende code.
Gaat sneller dan nogmaals weken frustrerend van alles proberen. ;-)

En o ja, verbeteringen blijven welkom !.

public class MainActivity extends Activity {

final Activity activity = this;
final Context context = this;
String actueleurl = "";
String defaultlink = "";

private WebView mWebView;
private WebChromeClient mWebChromeClient;
ImageButton linken;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.buttonbar);

defaultlink="http://www.telegraaf.nl/tv/nieuws/binnenland/26207589/__Pokeballen_als_gebakjes___.html";
actueleurl="http://www.telegraaf.nl/tv/nieuws/binnenland/26207589/__Pokeballen_als_gebakjes___.html";

linken = (ImageButton) findViewById(R.id.linken);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(14, 24, 4, 14);

linken.setLayoutParams(params);
linken.setImageResource(R.drawable.urlswit);

//===================================================================================\\
//========================== browser gedeelte ==========================================\\
//========================================================================================\\
mWebView = (WebView) findViewById(R.id.webView);
mWebView.getSettings().setLoadsImagesAutomatically(true);
mWebView.getSettings().setDomStorageEnabled(true);
WebSettings webSettings = mWebView.getSettings();
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setSupportMultipleWindows(false);
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.getSettings().setBuiltInZoomControls(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
if(actueleurl.length()<5){actueleurl="http://bluepeter.nl/bookmarksfaq/";}

mWebView.loadUrl(actueleurl);
//==========================================================================================
//================================ einde ===================================================
//==========================================================================================
}

private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{
webview.setWebChromeClient(mWebChromeClient);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.loadUrl(url);
actueleurl=url;
return true;
}
}
}

Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 1353
  • Reputatie 20
  • #8
  • 14 juli 2016
  • 20:10

Het probleem is opgelost

Volgens mij is de volgorde van de regels van belang.



dit werkt:

mWebView = (WebView) findViewById(R.id.webView);
mWebView.getSettings().setLoadsImagesAutomatically(true);
mWebView.getSettings().setDomStorageEnabled(true);
WebSettings webSettings = mWebView.getSettings();
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setSupportMultipleWindows(false);
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.getSettings().setBuiltInZoomControls(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
if(actueleurl.length()<5){actueleurl="http://bluepeter.nl/bookmarksfaq/";}

mWebView.loadUrl(actueleurl);

=======

dit niet:

mWebView = (WebView) findViewById(R.id.webView);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.setInitialScale(1);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadsImagesAutomatically(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(false);
webSettings.setPluginState(WebSettings.PluginState.ON);
// mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);


if (actueleurl.length() < 4) {
mWebView.loadUrl(defaultlink);
} else {
mWebView.loadUrl(actueleurl);
recentelinken.add(actueleurl);

}

Klik hier als je wilt Beantwoorden of Doorsturen

7,59 GB (44%) van 17 GB gebruikt
Beheren
Voorwaarden - Privacy
Laatste accountactiviteit: 33 minuten geleden
Details

Samsung Note geroot 4.1.2 Sweet ROM V11
HTC Desire geroot Liquidrom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren