Skocz do zawartości
M D

WebView, jak sprawdzić czy jestem na stronie zalogowany czy też nie

    Rekomendowane odpowiedzi

    M D
    Napisano (edytowane)

    Witam zostałem poproszony o przeniesienie do innego wątku, bo poruszałem za dużo kwestii, więc tak też uczyniłem :D Chodzi o to, że piszę aplikację, która otwiera za pomocą WebView pewną stronę i raz na 24h muszę coś na tej stronie obejrzeć i wszystko ok mam automatyczne logowanie, alarm i wakelock, który wybudza apke kiedy trzeba i ogląda/klika to co trzeba, problem w tym, że aplikacja musi być zalogowana, żeby to obejrzeć, ale nie wiem jak sprawdzić to przez webview.......

    Do logowania używam jednej klasy, którą podałem niżej a do oglądania/klikania wykorzystuje bardzo podobne jak to niżej, tylko, że Activity z tą różnicą, że jest inny 

    webView.loadUrl("podstrona na której klikam reklamy"); i inny String JS ze skryptem, który to klika

    Przykład podaje oparty o Fragment mam też na Activity (tą samą klase), ale sam nie wiem czego powinienem używać do WebView, Activity czy Fragmetów? (o to też pytałem w jednym temacie i też miałem przenieść do innego wątku :D )

    public class AdBlastFragment extends Fragment {
    
        SharedPreferences sharedPreferences;
    
        ProgressDialog pd = null;
        ProgressBar progressBar = null;
        private SwipeRefreshLayout swipe;
        private WebView webView;
    //    private NestedWebView webView;
    
        public static final String MyPREFERENCES = "AdBlast";
        private String login;
        private String password;
    
        private long myTime = 1551315630000L;
        Date currentTime = Calendar.getInstance().getTime();
        Alarmmanager am = new Alarmmanager();
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            PowerManager pm = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE);
    
            PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "T:AG");
            wakeLock.acquire();
            getActivity().getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    
            final View view = inflater.inflate(R.layout.website, container, false);
    
            sharedPreferences = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
            login = sharedPreferences.getString(this.getString(R.string.keyLogin), "");
            password = sharedPreferences.getString(this.getString(R.string.keyPassword), "");
    
            swipe = (SwipeRefreshLayout) view.findViewById(R.id.swpie);
            swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    LoadWeb(view);
                }
            });
            LoadWeb(view);
    
            wakeLock.release();
    
            return view;
        }
    
        public void LoadWeb(View view) {
            webView = (WebView) view.findViewById(R.id.website);
            WebSettings webSettings = webView.getSettings();
            webView.getSettings().setJavaScriptEnabled(true);
    
            webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    //        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
            webView.getSettings().setAppCacheEnabled(true);
            webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            webSettings.setDomStorageEnabled(true);
            webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
            webSettings.setUseWideViewPort(true);
            webSettings.setSavePassword(true);
            webSettings.setSaveFormData(true);
            webSettings.setEnableSmoothTransition(true);
    
            swipe.setRefreshing(true);
    
            webView.loadUrl("https://adblast.alternet.com/auth");
            final String js = "javascript:document.querySelector('input[name=email]').value='" + login + "';" +
                    "document.querySelector('input[name=password]').value='" + password + "';" +
                    "document.getElementById('submit').click()";
    
    
            webView.setWebViewClient(new WebViewClient() {
    //            @Override
    //            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    //                if (Uri.parse(url).getHost().equals("https://adblast.alternet.com/home")) {
    //                    //open url contents in webview
    //                    return false;
    //                } else {
    //                    //here open external links in external browser or app
    //                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    //                    startActivity(intent);
    ////
    ////                    Intent intent = new Intent(Intent.ACTION_VIEW, AdBlastFragment.class); // Uri.parse(url)
    ////                    startActivity(intent);
    //
    ////                    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
    ////                    fragmentTransaction.addToBackStack("tag of fragment"); // dzięki temu działa onBackPressed()
    ////                    fragmentTransaction.replace(R.id.content_frame, new AdBlastFragment());
    ////                    fragmentTransaction.commit();
    //                    return true;
    //                }
    //            }
    
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    Log.d("XXXXXXXXXXXXXXXXX", "your current url when webpage loading.." + url);
                    pd = new ProgressDialog(getActivity());
                    pd.setTitle("Please Wait..");
                    pd.setIcon(R.drawable.ad);
    //                pd.setProgressStyle(1);
                    pd.setMessage("Website is Loading..");
                    pd.show();
                    super.onPageStarted(view, url, favicon);
                }
    
                @Override
                public void onPageFinished(WebView view, String url) {
                    Log.d("YYYYYYYYYYYYYYYYYY", "your current url when webpage loading.. finish" + url);
                    pd.dismiss();
                    if (Build.VERSION.SDK_INT >= 19 && !login.isEmpty() && !password.isEmpty()) {
                        view.evaluateJavascript(js, new ValueCallback<String>() {
                            @Override
                            public void onReceiveValue(String s) {
                            }
                        });
                    }
                    swipe.setRefreshing(false);
                }
            });
    
            webView.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int newProgress) {
                    ((MainActivity) getActivity()).setActionBarTitleAndIcon("Page loading : " + newProgress + "%", 0);
                    if (newProgress == 100) {
                        ((MainActivity) getActivity()).setActionBarTitleAndIcon(view.getTitle(), 0);
                    }
                }
            });
        }
    }
      W dniu 11.03.2019 o 19:14, Coders Lab napisał:

    Masz jakieś cookies z tej strony? WebView powinno sesję użytkownika ogarnąć. Możesz próbować z CookieManager.getInstance(). Jakby co to załóż osobny temat do tego. Najlepiej nie tylko z opisem, a również z kodem z którym jest problem ;)

    Próbowałem tego a dokładnie Cookiemanager.getinstance().getcookie(url) ale nie ważne czy jestem wylogowany czy zalogowany, pobiera dokładnie to samo. W sumie to nie wiem nawet co powinno być pobrane, ale sprawdziłem to sobie za pomocą Log.d( tutaj dałem to getcookie(url) ), ale pobierało dokładnie to samo  

      W dniu 14.03.2019 o 09:59, senega napisał:

    A nie możesz wywołać strony, które jest widoczna tylko po zalogowaniu i sprawdzić co się załadowało? Zwykle jesteś przekierowany na stronę logowania więc wystarczy sprawdzić url.

    Rozumiem, że chodzi o zastosowanie metod...

    shouldOverrideUrlLoading, onPageStarted i onPageFinished

    tylko nie do końca wiem jeszcze jak to działa używam tylko onPageFinished i też przy pomocy Log.d() sprawdziłem sobie co jest pod tym URL w metodzie 

    public void onPageFinished(WebView view, String url)

    Log.d("URL: " + url); i faktycznie tu jest url, który mógłbym użyć np w jakiejś instrukcji warunkowej, ale to jest w metodzie a ja bym potrzebował tego wcześniej, przed metodą i nie bardzo wiem jak to rozwiązać :( 

     

    MAM NADZIEJĘ, ŻE TO CO NAPISAŁEM WYŻEJ JEST ZROZUMIAŁE W MIARĘ, BO JEST TYCH KLAS DUŻO WIĘCEJ I CIĘŻKO WRZUCIĆ TU CAŁY PROJEKT :D

    Edytowane przez M D

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Działa to tak że jeżeli url jest OK po wykonaniu  onPageStarted uruchamia się metoda onPageFinished. Jeżeli nastąpiło przekierowanie to po onPageStarted uruchamia się shouldOverrideUrlLoading i dopiero po niej onPageFinished

    W metodzie shouldOverrideUrlLoading czy przekierowało Cię na stronę logowania - jeżeli tak to uruchamiaj logowanie. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    M D

    Czy mógłbym prosić o jakiś prosty przykład z zastosowaniem tych metod, mogą być jakieś randomowe strony jak "google.com"? 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    To nie wystarczy?

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
            	if(url.equals("url Strony logowania")){
                  login();
                } else {
                  //Zrób coś innego  
                }
            }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    M D

    Szczerze, to nie wiem jak mam to zrobić, żeby aplikacja zalogowała się jeśli jest wylogowana, bo nie wiem czy dobrze to opisałem, chodzi o to, żeby aplikacja w webview odpaliła podstronę na której ma coś zrobić a jeśli nie może odpalić tej podstrony, to przechodzi do strony logowania loguje się automatycznie i wtedy wykonuję się na tej podstronie to co chce. Wiem trochę dziwnie napisane haha 

    Dodam kod może się przyda. Na ten moment w jednym Activity się loguję a w drugim jak już jestem zalogowany odpalam podstronę i klikam reklamy. Wolałbym, żeby to się samo zalogowało używając jedno Activity, ale nie bardzo wiem jak to ugryźć ? 

    public class ClickTest extends DrawerMenu {
    
        SharedPreferences sharedPreferences;
    
        private final String CHANNEL_ID = "personal_notification";
        private final int NOTIFICATION_ID = 001;
    
        private SwipeRefreshLayout swipe;
        private WebView webView;
        String currentURL = "https://adblast.alternet.com/advertising/watch-ads";
    
        public static final String MyPREFERENCES = "MyPrefs" ;
        private String login;
        private String password;
    
        // do usunięcia potem
        private long myTime = 1551922233999L;
        Date currentTime = Calendar.getInstance().getTime();
        Alarmmanager am = new Alarmmanager();
    
        @SuppressLint("JavascriptInterface")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
    
            PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "T:AG");
            wakeLock.acquire();
            getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    
            getLayoutInflater().inflate(R.layout.website, frameLayout);
    
            sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
            login = sharedPreferences.getString(this.getString(R.string.keyLogin),"");
            password = sharedPreferences.getString(this.getString(R.string.keyPassword),"");
    
            swipe = (SwipeRefreshLayout) findViewById(R.id.swpie);
            swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
    //                setWebIf();
                    LoadWeb();
                }
            });
    //        setWebIf();
                LoadWeb();
    
            new Timer().schedule(
                    new TimerTask() {
                        @Override
                        public void run() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
                                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
                                }
                            });
                        }
                    },
                    45000 //1*60*1000L /* 1 minutes delay*/
            );
            wakeLock.release();
    
    //        Log.d("ZZZZZZZZZZZZZZZZZZZZZ", "URL: " + webView);
        }
    
    //    public void setWebIf() {
    //        if (currentTime.getTime() >= myTime) {
    //            String url2 = "https://adblast.alternet.com/advertising/watch-ads";
    //
    ////            String js2 = "javascript:" +
    ////                    "var i = 1;" +
    ////                    "function myLoop () {" +
    ////                    "    setTimeout(function () {" +
    ////                    "        document.querySelector('span[class=navbar-toggler-icon]').click();" +
    ////                    "        i++;" +
    ////                    "        if (i < 11) {" +
    ////                    "            myLoop();" +
    ////                    "        }" +
    ////                    "    }, 100)" +
    ////                    "}" +
    ////                    "myLoop();";
    //
    //            // Button by ID
    //            String js2 = "javascript:" +
    //                    "var i = 1;" +
    //                    "function myLoop () {" +
    //                    "   setTimeout(function () {" +
    //                    "       document.querySelector('button[id=watchNow]').click();" +
    //                    "       i++;"+
    //                    "       if (i < 1001) {" +
    //                    "           myLoop();" +
    //                    "       }" +
    //                    "   }, 1)" +
    //                    "}" +
    //                    "myLoop();";
    //
    //            // Clicker na testy 3 metody 1000 kliknięć na 6 sekund
    //// Pierwsza metoda
    ////            String url2 = "https://cookie.riimu.net/speed/";
    ////            String js2 = "javascript:" +
    ////                    "var i = 1;" +
    ////                    "function myLoop () {" +
    ////                    "    setTimeout(function () {" +
    ////                    "        document.querySelector('img[id=virtualCookie]').click();" +
    ////                    "        i++;" +
    ////                    "        if (i < 1000) {" +
    ////                    "            myLoop();" +
    ////                    "        }" +
    ////                    "    }, 0.1)" +
    ////                    "}" +
    ////                    "myLoop();" ;
    ////  Druga metoda
    ////            (function myLoop (i) {
    ////                setTimeout(function () {
    ////                    document.querySelector('img[id=virtualCookie]').click();
    ////                    if (--i) myLoop(i);
    ////                }, 1)
    ////            })(1000);
    //// Trzecia metoda
    //            // setInterval(function () {document.querySelector('img[id=virtualCookie]').click();}, 1);
    //
    //
    //            LoadWeb(url2, js2);
    //        } else {
    //            String url = "https://adblast.alternet.com/auth";
    //
    //            String js = "javascript:document.querySelector('input[name=email]').value='" + login + "';" +
    //                    "document.querySelector('input[name=password]').value='" + password + "';" +
    //                    "document.getElementById('submit').click()";
    //
    //            LoadWeb(url, js);
    //        }
    //    }
    
        // final String url_adblast, final String js
        public void LoadWeb() {
            webView = (WebView) findViewById(R.id.website);
            WebSettings webSettings = webView.getSettings();
            webView.getSettings().setJavaScriptEnabled(true);
    
            webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
            webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
            webView.getSettings().setAppCacheEnabled(true);
            webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            webSettings.setDomStorageEnabled(true);
            webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
            webSettings.setUseWideViewPort(true);
            webSettings.setSavePassword(true);
            webSettings.setSaveFormData(true);
            webSettings.setEnableSmoothTransition(true);
    
            swipe.setRefreshing(true);
    
            webView.loadUrl(currentURL);
            final String js = "javascript:" +
                    "var i = 1;" +
                    "function myLoop () {" +
                    "   setTimeout(function () {" +
                    "       document.querySelector('button[id=watchNow]').click();" +
                    "       i++;"+
                    "       if (i < 1001) {" +
                    "           myLoop();" +
                    "       }" +
                    "   }, 1)" +
                    "}" +
                    "myLoop();";
    
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
    
                }
    
                @Override
                public void onPageFinished(final WebView view, String url) {
                    if (Build.VERSION.SDK_INT >= 19 && !login.isEmpty() && !password.isEmpty()) {
                        view.evaluateJavascript(js, new ValueCallback<String>() {
                            @Override
                            public void onReceiveValue(String s) {
                                Toast.makeText(getApplicationContext(), "Oglądam reklamy ", Toast.LENGTH_LONG).show();
                            }
                        });
                    }
                    swipe.setRefreshing(false);
                }
    
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
    //                if(url.equals("https://adblast.alternet.com/advertising/watch-ads")){
                    if (Uri.parse(url).getHost().equals("https://adblast.alternet.com/auth")) {
                        // This is my website, so do not override; let my WebView load the page
    
                        String auth = "https://adblast.alternet.com/auth";
    
                        String js = "javascript:document.querySelector('input[name=email]').value='" + login + "';" +
                                "document.querySelector('input[name=password]').value='" + password + "';" +
                                "document.getElementById('submit').click()";
    
                        view.loadUrl(auth);
                        view.loadUrl(js);
    
                        return false;
                    } else {
                        String js2 = "javascript:" +
                                "var i = 1;" +
                                "function myLoop () {" +
                                "   setTimeout(function () {" +
                                "       document.querySelector('button[id=watchNow]').click();" +
                                "       i++;"+
                                "       if (i < 1001) {" +
                                "           myLoop();" +
                                "       }" +
                                "   }, 1)" +
                                "}" +
                                "myLoop();";
                        view.loadUrl(currentURL);
                        view.loadUrl(js2);
    
                        return true;
                    }
                    // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
    //                Intent intent = new Intent(getApplicationContext(), AdBlast.class); // Uri.parse(url)
    //                startActivity(intent);
                }
            });
    
            webView.setWebChromeClient(new WebChromeClient() {
                /*
                    public void onProgressChanged (WebView view, int newProgress)
                        Tell the host application the current progress of loading a page.
    
                    Parameters
                        view WebView: The WebView that initiated the callback.
    
                        newProgress int: Current page loading progress, represented by an
                            integer between 0 and 100.
                */
                public void onProgressChanged(WebView view, int newProgress) {
    //                ((MainActivity)getApplicationContext()).setActionBarTitleAndIcon("Page loading : " + newProgress + "%", 0);
                    getSupportActionBar().setTitle("Page loading : " + newProgress + "%");
    
                    if (newProgress == 100) {
    //                    ((MainActivity)getApplicationContext()).setActionBarTitleAndIcon(view.getTitle(),0);
                        getSupportActionBar().setTitle(view.getTitle());
                    }
                }
            });
        }
    
        public void displayNotification(View view) {
    
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID);
            builder.setSmallIcon(R.drawable.ic_event_note_notification);
            builder.setContentTitle("AdBlastFragment Reklamy");
            builder.setContentText("Oglądanie reklam w tle");
            builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
            NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(this);
            notificationManagerCompat.notify(NOTIFICATION_ID, builder.build());
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.notification, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            switch (id) {
                case R.id.notification_set_autoclicker:
                    Toast.makeText(this, "Ustaw czas kiedy aplikacja ma automatycznie klikać reklamy", Toast.LENGTH_SHORT).show();
                    Intent set_autoclicker = new Intent(getApplicationContext(), Alarmmanager.class);
                    startActivity(set_autoclicker);
                    break;
                case R.id.notification_manualclicker:
                    Toast.makeText(this, "Włącz auto klikanie", Toast.LENGTH_SHORT).show();
                    Intent autoclicker = new Intent(getApplicationContext(), ClickTest.class);
                    startActivity(autoclicker);
                    break;
            }
            return true;
        }
    
        @Override
        public void onBackPressed() {
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                super.onBackPressed();
            }
        }
    }

     

     @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
            	if(url.equals("url Strony logowania")){
                  login();
                } else {
                  //Zrób coś innego  
                }
            }

    A co z "return", bo metoda jest typu boolean, wiec coś powinna zwrócić i czym tutaj jest metoda login(); , powinienem zastosować metodę czy mogę jak wyżej w kodzie? Dałem wyżej kod, ale szczerze nie mam pojęcia jak to zrobić. Jak jestem zalogowany, to działa ,ale jak mnie wyloguje, to nic się nie dzieje, nic się nie odpala w webview jest białe tło, chyba, że zrobię swipe, to fakt załaduje mi się strona logowania, ale nie loguje mnie automatycznie, tak jakby view.loadUrl(auth); view.loadUrl(js); zwłascza ten z JS był ignorowany :( 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    W dniu 15.04.2019 o 23:14, M D napisał:

    A co z "return"

    return false  - WebView automatycznie załaduje stronę z urlemen. Nie trzeba wtedy robić loadUrl(url).

    return true -> Podany url nie będzie załadowany w WebView

    W Twoim przypadku, gdy wykryjesz że przenosi Cię na stronę logowania, zwracasz false i automatycznie ta strona się ustawia. Te linie: 

    view.loadUrl(currentURL);
    view.loadUrl(js2);

    prawdopodobnie nie są brane pod uwagę. 
    Gdy przenosi Cię na stronę logowania powinieneś  odpalać Activity z obsługą logowania i zwracać true.
     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    M D

    Próbowałem Twojej metody, ale nie jestem przekonany czy działa, bo niby jak jestem wylogowany, to przenosi mnie automatycznie do podstrony z oglądaniem reklam, ale nie wyświetla się okno logowania mimo, to jestem nagle na podstronie już zalogowany i nie wiem czy coś jest nie tak czy to się jakoś w tle zrobiło, że nawet tego nie widziałem. 

    Rozwiązałem mój problem sam dosłownie kilka dni temu i zrobiłem to tak ..... 

    @Override
    public void onPageFinished(final WebView view, String url) {
        if (Build.VERSION.SDK_INT >= 19 && !login.isEmpty() && !password.isEmpty()) {
            webView.loadUrl(auth_js);
    
            if (url.equals("https://adblast.alternet.com/home")) {
                webView.loadUrl(watchAdURL);
                final String js = "javascript:" +
                        "var i = 1;" +
                        "function myLoop () {" +
                        "   setTimeout(function () {" +
                        "       document.querySelector('button[id=watchNow]').click();" +
                        "       i++;" +
                        "       if (i < 1001) {" +
                        "           myLoop();" +
                        "       }" +
                        "   }, 1)" +
                        "}" +
                        "myLoop();";
    
                webView.setWebViewClient(new WebViewClient() {
                    @Override
                    public void onPageFinished(WebView view, String url) {
                        if (!url.equals(authURL)) {
                            Toast.makeText(getApplicationContext(), "Oglądam reklamy ", Toast.LENGTH_LONG).show();
                            webView.loadUrl(js);
                        } else {
                            Intent startIntent = new Intent(getApplicationContext(), ClickTest.class);
                            getApplicationContext().startActivity(startIntent);
                        }
                    }
                });
            }
        }
        watchAdURL = watchAdURL;
        swipe.setRefreshing(false);
    }

    Nie wiem czy mogę umieścić webView.setWebViewClient(new WebViewClient() wewnątrz webView.setWebViewClient(new WebViewClient() jak wyżej, ale działa tak jak chciałem, co prawda po drodze wyskakuje mi szybko okno logowania i potem przechodzi do podstrony istna samowolka i skakanie po stronach, ale działa. Wcześniej wykorzystywałem do tego dwa activity teraz jedno, więc i tak jest progres, bo skróciłem cały ten proces bardzo i zajmuje może minute a wcześniej ponad minutę czy nawet dwie :D 

    Daj znać czy mogę w ogóle stosować webView.setWebViewClient(new WebViewClient() wewnątrz webView.setWebViewClient(new WebViewClient(), bo jestem ciekaw czy nie zaburzam czegoś w ten sposób, nie wiedziałem takiego przykładu w internecie/forach sam jakoś to zrobiłem metodą prób i błędów. :D 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x