Android:从代码启动Web浏览器

时间:2011-08-01 15:08:26

标签: android

我正在尝试使用提供的url打开Web浏览器,但是,在以下代码的最后一行之后,我得到一个空指针异常。根据调用堆栈,Actvity.startActvitity(Intent)是异常发生的地方。此代码位于主活动的子视图的自定义控制器类中。关于如何通过代码正确启动Web浏览器的任何想法,理想情况是从主要活动之外,因为我将尽可能多地重用。或者至少指出我正确的方向。

private void showWebSite() {
            String _url = (String) this.urlview.getText();
            Activity webactivity = new Activity();
            Intent webIntent = new Intent( Intent.ACTION_VIEW );
            webIntent.setData( Uri.parse(_url) );
            webactivity.startActivity( webIntent );
    }

2 个答案:

答案 0 :(得分:3)

private void showWebSite() {
        String _url = (String) this.urlview.getText();
        //Activity webactivity = new Activity(); Not required
        Intent webIntent = new Intent( Intent.ACTION_VIEW );
        webIntent.setData( Uri.parse(_url) );
        this.startActivity( webIntent );
}

如果您希望它可重复使用,请创建一个像这样的静态方法

 public static void showWebSite(Activity activity, String url) {

        Intent webIntent = new Intent( Intent.ACTION_VIEW );
        webIntent.setData( Uri.parse(url) );
        activity.startActivity( webIntent );
}

/* Call from your activities like this */

CLASSNAME.showWebSite(this, (String) this.urlview.getText());

答案 1 :(得分:1)

这不起作用:您无法以您尝试的方式实例化Activity(Activity webactivity = new Activity();将返回Android框架未正确设置的类,因此空指针异常)。 / p>

你必须将原始的Activity传递给函数:类似这样的东西:

private void showWebSite(Activity webactivity) {
            String _url = (String) this.urlview.getText();
            Intent webIntent = new Intent( Intent.ACTION_VIEW );
            webIntent.setData( Uri.parse(_url) );
            webactivity.startActivity( webIntent );
    }