Reputation: 209
I am displaying a html string into a textview which contains some links, i am diplaying that with the help of below code :
itemContent.setText(Html.fromHtml(jo.getString("itemContent")));
itemContent.setMovementMethod(LinkMovementMethod.getInstance());
clicking on that links direct me to web browser and successfully opens that link, but i want to open that links into my app's webView. How could i do this??
Upvotes: 1
Views: 3632
Reputation: 209
Yeah!!! finally i've done with what i want. I used a webView
client to achieve this. The following is the method in which I have passed my html String containing url's :
@SuppressLint("SetJavaScriptEnabled")
private void loadWebView(WebView webView,String htmlString)
{
try {
final String mimeType = "text/html";
final String encoding = "UTF-8";
WebViewClient yourWebClient = new WebViewClient()
{
// Override page so it's load on my view only
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// This line we let me load only pages inside Webpage
if ( url.contains("") == true )
// Load new URL Don't override URL Link
return false;
// Return true to override url loading (In this case do nothing).
return true;
}
};
// Get Web view
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true); //Zoom Control on web (You don't need this
//if ROM supports Multi-Touch
webView.getSettings().setBuiltInZoomControls(true); //Enable Multitouch if supported by ROM
webView.setWebViewClient(yourWebClient);
// Load URL
webView.loadDataWithBaseURL("", htmlString, mimeType, encoding, "");
} catch (Exception e) {
e.printStackTrace();
}
}
Upvotes: 2
Reputation: 2714
Instead of using default LinkMovementMethod, make your own implementation like...
itemContent.setMovementMethod(new MovementMethod() {
@Override
public boolean onTrackballEvent(TextView widget, Spannable text,
MotionEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public boolean onTouchEvent(TextView widget, Spannable text,
MotionEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public void onTakeFocus(TextView widget, Spannable text, int direction) {
// TODO: Do here what you want
}
@Override
public boolean onKeyUp(TextView widget, Spannable text, int keyCode,
KeyEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public boolean onKeyOther(TextView view, Spannable text, KeyEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public boolean onKeyDown(TextView widget, Spannable text, int keyCode,
KeyEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public boolean onGenericMotionEvent(TextView widget, Spannable text,
MotionEvent event) {
// TODO: Do here what you want
return false;
}
@Override
public void initialize(TextView widget, Spannable text) {
// TODO: Do here what you want
}
@Override
public boolean canSelectArbitrarily() {
// TODO: Do here what you want
return false;
}
});
See documentation HERE to find your best suitable method among them...:)
Hope this helps...
Upvotes: 1
Reputation: 4187
The way i'd go about this is simply set the text of the textview as the url, then on click use
myWebView.loadUrl(tV.getText().toString());
Upvotes: 0