首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActivityNotFoundException on TextView with autoLink="web“

ActivityNotFoundException on TextView with autoLink="web“
EN

Stack Overflow用户
提问于 2014-02-21 15:06:58
回答 3查看 675关注 0票数 4

如果一个ActivityNotFoundException因为显示一个网站而被点击,那么如何捕捉TextView呢?

如果设备没有浏览器,则抛出该异常。

XML:

代码语言:javascript
复制
<TextView
    android:id="@+id/tvTextView"
    android:autoLink="web" />

爪哇:

代码语言:javascript
复制
TextView tvTextView = (TextView) findViewById(R.id.tvTextView);
tvTextView.setText("http://www.stackoverflow.com/");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-21 15:10:10

您可以使用以下方法检查是否有活动来处理您的意图:

代码语言:javascript
复制
Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.stackoverflow.com"));
PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() > 0) {
    //At least one application can handle your intent 
    //Put this code in onCreate and only Linkify the TextView from here
    //instead of using android:autoLink="web" in xml
    Linkify.addLinks(tvTextView, Linkify.WEB_URLS);
    // or tvTextView.setAutoLinkMask(Linkify.WEB_URL), as suggested by Little Child
}else{
    //No Application can handle your intent, notify your user if needed
}
票数 3
EN

Stack Overflow用户

发布于 2014-02-21 15:08:51

startActivity()包围在try-catch块中。就这样。

您的catch将处理ActivityNotFoundException

基于2 2Dee回答的更新:

谷歌说,应该做的是,OP必须首先创建一个打开网站的意图,而不是在XML中使用autoLink:web。在onCreate()中,看看是否有Activity来处理它。如果是,请检索TextView并调用setAutoLinkMask(Linkify.WEB_URL)

代码片段:

代码语言:javascript
复制
Intent checkBrowser = new Intent(Intent.ACTION_VIEW);
checkBrowser.setData("http://www.grumpycat.com");
List<ResolveInfo> info = context.getPackageManager().queryIntentActivities(checkBrowser,0);
if(info.getSize() > 0){
    TextView  tv = (TextView) findElementById(R.id.tv);
    tv.setAutoLinkMask(Linkify.WEB_URL);
}
票数 2
EN

Stack Overflow用户

发布于 2014-02-21 15:17:43

可以使用此函数检查浏览器是否可用。

代码语言:javascript
复制
public boolean isBrowserAvailable(Context c) {

    Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData("http://www.google.com");//or any other "known" url
        List<ResolveInfo> ia = c.getPackageManager().queryIntentActivities(i, 0);
        return (ia.size() > 0);


}

然后,在onCreate中,您将决定是否使其可自动登录。

代码语言:javascript
复制
    if (isBrowserAvailable(this) 

          tvTextView.setAutoLinkMask(Linkify.WEB_URL)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21937968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档