Jump to content
alysson122010

Escolher oq vai abrir dentro da webview

Recommended Posts

Olá galera, eu estou com um problema de abrir os links fora da webview.

Eu preciso que todos os links que nao seja o meu que esta rodando na webview abre fora dela pois meus anuncios tem que abrir fora.

Exemplo oq for meu link abre na webview, oq nao fora abre fora achei esse codigo na ne porem da erro no meu codigo:

 

Codigo da net:

https://pt.stackoverflow.com/questions/256177/questão-com-webview-abrir-mais-de-um-link-fora-do-app?rq=1

 

Meu codigo:

package com.example.cubomaster;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;


public class MainActivity extends AppCompatActivity {

    WebView mWebView;

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


        mWebView = (WebView) findViewById(R.id.webView);

        mWebView.setBackgroundColor(Color.parseColor("#1e2128"));
        mWebView.setWebViewClient(new Browser_home());
        mWebView.setWebChromeClient(new MyChrome());
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAppCacheEnabled(true);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        if(savedInstanceState==null){
            mWebView.post(new Runnable() {
                @Override
                public void run() {
                    loadWebsite();
                }
            });
        }

    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState )
    {
        super.onSaveInstanceState(outState);
        mWebView.saveState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onRestoreInstanceState(savedInstanceState);
        mWebView.restoreState(savedInstanceState);
    }

    private void loadWebsite() {

            mWebView.loadUrl("file:///android_asset/iniciar.html");
        mWebView.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { mWebView.loadUrl("file:///android_asset/erro.html"); } });
    }

    
    class Browser_home extends WebViewClient {

        Browser_home() {
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            setTitle(view.getTitle());
            super.onPageFinished(view, url);


        }
    }

    private class MyChrome extends WebChromeClient {

        private View mCustomView;
        private WebChromeClient.CustomViewCallback mCustomViewCallback;
        protected FrameLayout mFullscreenContainer;
        private int mOriginalOrientation;
        private int mOriginalSystemUiVisibility;

        MyChrome() {}

        public Bitmap getDefaultVideoPoster()
        {
            if (mCustomView == null) {
                return null;
            }
            return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
        }

        public void onHideCustomView()
        {
            ((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
            this.mCustomView = null;
            getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
            setRequestedOrientation(this.mOriginalOrientation);
            this.mCustomViewCallback.onCustomViewHidden();
            this.mCustomViewCallback = null;
        }

        public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
        {
            if (this.mCustomView != null)
            {
                onHideCustomView();
                return;
            }
            this.mCustomView = paramView;
            this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
            this.mOriginalOrientation = getRequestedOrientation();
            this.mCustomViewCallback = paramCustomViewCallback;
            ((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
            getWindow().getDecorView().setSystemUiVisibility(3846);
        }
    }
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By luiz_paulo_andrade
      Estou desenvolvendo um app com ionic que tem uma página webview dentro de um iframe, nessa webview existe um botão de download que funciona normalmente no browser, mas no android não funciona. Creio que o Android esteja bloqueando esse download, gostaria de saber como habilitar para que o download seja feito diretamente, como faz no browser.
    • By Gabrielvt14
      Ola pessoal.
       
      Estou com um app rodando um webview. Ele é um sistema na web e o webview com o app.
       
      No sistema, tem determinadas ações que o sistema envia push notification para o usuário.
      Fiz a integração com o firebase cloud messaging Javascript. Mas ele nao funciona no webview, somente acessando diretamente pelo browser.
       
      Pelo que estava pesquisando, eu teria que configurar a parte de javascript, para web, e no webview configurar de novo para funcionar no webview, mas meu conhecimento de Java é bem pouco, e uso a base de dados na web pra enviar os push.
       
      Alguém sabe se tem como eu fazer essa integração via Javascript e funcionar tanto no browser quanto no webview?
    • By RogérioSilva
      Olá, alguém poderia me ajudar?
      Tenho uma aplicação que é um webview...
      Queria introduzir o chromecast nele, já paguei o valor cast do google, mas o amigo que iria me ajudar, sumiu.
      Poderiam me dar dicas, ou links que ajuda ou mesmo comentar ai como seria? 
      Agradeço :D
    • By RogérioSilva
      Alguém pode me ajudar a como colocar o admob interstitial na minha aplicação?
      Ela é um webview.
      Então queria que quando clicasse em algum link, abrisse o admob, ou mesmo sem clicar abrisse, já tentei de tudo, pelo menos aparecer o anuncio, mas não aparece de jeito nenhum 
    • By RogérioSilva
      Gostaria de saber o que eu tenho que estudar, para
      Criar uma splash, que ao carregar abre o webview, e os links do webview em vez de abrir seco, ao clicar, aparece uma imagem de loading, 
      e os videos, ao colocar em fullscreen, a tela gira automaticamente.
      E se é muito compicado ou não
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.