2017-02-17 2 views
0

Comment obtenir et partager l'URL actuelle au webview? Mon partage fonctionne mais ne partage pas l'URL actuelle chargée.Comment partager l'URL actuellement chargée depuis le Webview

Voici mon code dans WebView

private String mTrackUrlChange; 

private WebViewClient webViewClient = new WebViewClient(){ 

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

    } 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     frameLayout.setVisibility(View.VISIBLE); 
     mTrackUrlChange=url; 
     return true; 
    } 

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

     mTrackUrlChange = url; 
    } 
}; 

Pour ma part:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.menu, menu); 
    MenuItem shareItem = menu.findItem(R.id.action_share); 
    ShareActionProvider mShare = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem); 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, mTrackUrlChange); 
    mShare.setShareIntent(shareIntent); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, mTrackUrlChange); 
    mShare.setShareIntent(shareIntent); 
    return super.onCreateOptionsMenu(menu); 

} 

Répondre

0

Mes oeuvres d'actions, mais ne partage pas l'URL actuelle chargée

Vous avez pas expliqué ce que cela signifie. Cependant, votre code a quelques problèmes qui peuvent contribuer à ce que votre problème soit.

D'abord, vous construisez le Intent et en appelant setShareIntent() trop tôt. mTrackUrlChange sera null dans onCreateOptionsMenu(), parce que votre WebView aura à peine commencé à charger la page Web. Construire le Intent et appeler setShareIntent() à l'intérieur onPageFinished(), pas à l'intérieur onCreateOptionsMenu().

Au-delà, puisque vous définissez EXTRA_STREAM, les besoins supplémentaires à un Uri, pas String et le type MIME doit être le type MIME du contenu réel (par exemple, text/html pour une page Web). En outre, vous appelez setShareIntent() plusieurs fois, ce qui n'est pas nécessaire.

+0

Je veux dire que cela fonctionne mais quand quand j'utilise le partage, il ne contient pas l'URL – kielou

+1

@kielou: S'il vous plaît voir le deuxième paragraphe de ma réponse. – CommonsWare

+0

cela ne me permet pas d'appeler 'setShareIntent()' dans 'onPageFinished()' – kielou