2017-01-06 98 views
0

我得到Web Data,我将它设置为textView。呃Web数据,有网址。我想点击给出的url,它应该在ApplicationWebView内开放。但其推出new browser。请指导我。我所做的是在这里,如何在WebView中从TextView链接中打开URL?

private void setTextViewHTML(TextView type_1_bodyTxt, String main_hrml) { 
    CharSequence sequence = Html.fromHtml(main_hrml); 
    SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence); 
    URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class); 
    for (URLSpan span : urls) { 
     makeLinkClickable(strBuilder, span); 
    } 

    if (main_hrml.contains("<p>")){ 
     if (!main_hrml.contains("<ul")) { 
      GetDeviceResolution getDeviceResolution = new GetDeviceResolution((Demo) context); 
      type_1_bodyTxt.setPadding(0, 0, 0, -(int) (getDeviceResolution.setHeight(0.06))); 
     }else{ 
      GetDeviceResolution getDeviceResolution = new GetDeviceResolution((Demo) context); 
      type_1_bodyTxt.setPadding(0, 0, 0, -(int) (getDeviceResolution.setHeight(0.02))); 
     } 
    } 
    type_1_bodyTxt.setText(strBuilder); 
    type_1_bodyTxt.setLinkTextColor(Color.RED); 


    removeLine(type_1_bodyTxt, main_hrml); 
    type_1_bodyTxt.setMovementMethod(LinkMovementMethod.getInstance()); 
} 

private void removeLine(TextView type_1_bodyTxt, String content){ 
    Spannable s = (Spannable) Html.fromHtml(content); 
    for (URLSpan u: s.getSpans(0, s.length(), URLSpan.class)) { 
     s.setSpan(new UnderlineSpan() { 
      public void updateDrawState(TextPaint tp) { 
       tp.setUnderlineText(false); 
      } 
     }, s.getSpanStart(u), s.getSpanEnd(u), 0); 
    } 

    type_1_bodyTxt.setText(s); 
} 



private void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) { 
    int start = strBuilder.getSpanStart(span); 
    int end = strBuilder.getSpanEnd(span); 
    int flags = strBuilder.getSpanFlags(span); 
    ClickableSpan clickable = new ClickableSpan() { 
     public void onClick(View view) { 
      // Do something with span.getURL() to handle the link click... 
      Intent intent = new Intent(context, WebViewActivity.class); 
      intent.putExtra("url", span.getURL()); 
      context.startActivity(intent); 
     } 
    }; 
    strBuilder.setSpan(clickable, start, end, flags); 
    strBuilder.removeSpan(span); 
} 

**我WebActivity这里我传递的网址,意图是**

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

    loadUrl = getIntent().getStringExtra("url"); 
    WebView webview = (WebView) findViewById(R.id.webView); 
    ImageView webClose = (ImageView) findViewById(R.id.webClose); 
    loadUrl = getIntent().getStringExtra("url"); 
    if (loadUrl == null) { 
    } 

    webview.getSettings().setAppCacheEnabled(true); 
    webview.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath()); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.getSettings().setDefaultTextEncodingName("utf-8"); 
    webview.getSettings().setLoadsImagesAutomatically(true); 
    webview.setWebViewClient(new WebViewClient() { 

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

     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return super.shouldOverrideUrlLoading(view, url); // return false; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
     } 
    }); 
    webClose.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      finish(); 
     } 
    }); 
    webview.loadUrl(loadUrl); 
} 

}

+0

显示的WebView活动也。 – Spartan

回答

0

当你点击链接有TextView的你必须打开活动有webview并加载你在textview上的URL。

webView.loadURL(textViewValue); 
webView.setWebViewClient(new WebViewClient()); 

WebViewClient会在你的应用程序的WebView本身打开URL,没有外部的浏览器将被打开

+0

NOt like thas bro ..其实这里是在textView内下划线..现在,当我点击它它打开我的webView,一切都很完美,但当我删除我的下划线,然后这个调用浏览器..点击事件不发射.. –

+0

在你的textview上添加onClickListener()然后,如果你不想要下划线 – Mrinmoy

+0

不工作..它总是打开浏览器 –