2016-01-20 3 views
2

J'essaie de charger une page Web dans une vue Web, je suis capable de le faire, mais il y a un bouton qui vous permet de télécharger un fichier. Ce bouton fonctionne bien lorsque je charge la page dans l'application Chrome sur android et il ouvre le navigateur de fichiers, mais rien ne se passe sur la vue web. est-il possible d'utiliser un chrome pour la vue web, ou comment obtenir ce bouton pour déclencher le sélecteur de fichiers dans la vue web?Android Webview vs Android Chrome Browser

J'ai essayé de changer les options d'affichage Web pour activer le javascript ect, ci-dessous est le code pour le webactivity:

public class WebActivity extends Activity { 
Button b1; 
WebView wv; 





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

    b1=(Button)findViewById(R.id.button); 

    wv=(WebView)findViewById(R.id.webView); 
    //wv1.setWebViewClient(new MyBrowser()); 

    wv.setWebChromeClient(new WebChromeClient()); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      WebSettings webSettings = wv.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setAppCacheEnabled(true); 
      webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
      webSettings.setAllowFileAccess(true); 
      wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

      wv.loadUrl("MY WEBSITE URL"); 
      wv.setWebChromeClient(new WebChromeClient()); 
      wv.setWebViewClient(new WebViewClient() { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        // TODO Auto-generated method stub 
        if (url.startsWith("tel:") || url.startsWith("mailto:")) { 
         Intent intent = new Intent(Intent.ACTION_VIEW, 
           Uri.parse(url)); 
         startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) { 
         view.loadUrl(url); 
        } 
        return true; 
       } 
      }); 

     } 
    }); 
} 

}

+1

Si vous voulez toutes ces fonctionnalités sans écrire ce code supplémentaire pour le WebView, je vous suggère d'intégrer le passage pour piétons en remplacement de Webview. - https://crosswalk-project.org/ - https://crosswalk-project.org/documentation/apis/embedding_api.html - il va ajouter environ 19megs à l'application, mais le navigateur est vraiment bon – Tasos

+0

aura un regard – Lawtonj94

+0

il y a un tutoriel comment facile pour android Studio afin que vous puissiez tester pour voir si vous aimez l'utiliser - https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/ - mais change (compile 'org.xwalk: xwalk_core_library: 10.39.235.15') au dernier numéro de version qui peut être trouvé ici https://crosswalk-project.org/documentation/downloads.html qui est actuellement (16.45.421.19) - – Tasos

Répondre

0

Il y a quelques options qui ne sont pas activées par défaut, le plus probable vous n'avez pas javascript.

WebSettings webSettings = mWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
+0

J'ai ajouté ceux-ci aux options, je vais l'ajouter à la question wv1.getSettings(). SetLoadsImagesAutomatically (true); wv1.getSettings(). SetJavaScriptEnabled (true); wv1.getSettings(). SetAllowFileAccess (true); Cela ne fonctionne toujours pas – Lawtonj94

1

Essayez le code suivant.

WebView wv; 
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setAppCacheEnabled(true); 
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
    webSettings.setAllowFileAccess(true); 
    wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

    wv.loadUrl("YOUR URL HERE"); 
      wv.setWebViewClient(new WebViewClient() { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        // TODO Auto-generated method stub 
        if (url.startsWith("tel:") || url.startsWith("mailto:")) { 
         Intent intent = new Intent(Intent.ACTION_VIEW, 
           Uri.parse(url)); 
         startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) { 
         view.loadUrl(url); 
        } 
        return true; 
       } 
      }); 

    wv.setWebChromeClient(new WebChromeClient()); 

Espérons que cela vous aidera. Les navigateurs ont toutes les API pour faire toutes ces fonctions.

+0

Doit essayer wv.setWebChromeClient (new WebChromeClient()); –

+0

Je reçois toujours le même problème Je ne suis pas sûr pourquoi – Lawtonj94