2017-02-17 1 views
0

Wie bekomme ich und teile die aktuelle URL in webview? Meine Freigabe funktioniert, teilt jedoch nicht die aktuelle geladene URL.Wie teile ich die aktuell geladene URL von webview

Hier ist mein Code in 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; 
    } 
}; 

Für meinen Anteil:

@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); 

} 

Antwort

0

Werke Mein Anteil aber die aktuelle URL geladen

nicht

Sie haben gemeinsam nutzen nicht erklärt, was das bedeutet. Ihr Code weist jedoch einige Probleme auf, die zu Ihrem Problem beitragen können.

Zuerst erstellen Sie die Intent und rufen setShareIntent() zu früh auf. mTrackUrlChange wird null in onCreateOptionsMenu() sein, weil Ihre WebView kaum begonnen haben, die Webseite zu laden. Bauen Sie die Intent und rufen Sie setShareIntent() innerhalb onPageFinished(), nicht innerhalb onCreateOptionsMenu().

Darüber hinaus, da Sie EXTRA_STREAM setzen, die zusätzlichen Anforderungen sein ein Uri, kein String und der MIME-Typ muss der MIME-Typ des eigentlichen Inhalts sein (zum Beispiel text/html für eine Webseite). Außerdem rufen Sie mehrmals die Nummer setShareIntent() an, was nicht notwendig ist.

+0

Ich meine es funktioniert, aber wenn ich share verwenden, enthält es nicht die URL – kielou

+1

@kielou: Bitte beachten Sie den zweiten Absatz meiner Antwort. – CommonsWare

+0

es erlaubt mir nicht 'setShareIntent()' innerhalb von 'onPageFinished() ' – kielou

Verwandte Themen