我试图通过单击textview来打开标准的android webbrowser。 我定义了android:autoLink =" web"在textview中,然后使用onTouchListener启动browserintent:
// On Touch Listener
chatText.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event) {
// view.performClick();
view.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN){
view.performClick();
openBrowser(chatText.getText().toString());
}
return false;
}
});
// Start Browser function
public void openBrowser(String url) {
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (webIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(webIntent);
}
}
但是,每次我点击textview上的链接时都会收到错误:
从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?
虽然我在新开始的活动中添加了标记,但是有人知道我在这里做错了吗?
我从一个扩展ArrayAdapter的ChatArrayAdapter类调用该活动,但是,我将适当的上下文传递给新启动的活动
答案 0 :(得分:1)
在您的代码中,您的聊天文字中包含一些网址。为了简化操作,Android具有Linkify
类和android:autoLink
XML属性。这些有助于在您单击链接时自动突出显示链接并执行标准操作。所有这些都是开箱即用的。
您的chatText
可能是TextView
。您可以使用我提到的两种方式之一:
在XML中:
在chatText
的XML中添加以下属性:
android:autoLink="web"
在代码中:
Linkify.addLinks(chatText,Linkify.WEB_URLS);