无法解决方法' startActivity(android.content.Intent); - 在Android设备上打开URL

时间:2016-05-18 10:14:38

标签: java android android-intent

我尝试调用函数来打开带有给定网址的浏览器,但收到此错误消息。

我查看了这两个问题并理解我可能有上下文问题,但仍然无法理解如何解决它。

Cannot resolve method startActivity()

Cannot find symbol method startActivity(android.content.Intent)

我的代码:

public void openWeb(String url) {
    String fullUrl = "http://bit.do/"+url;
    Uri webpage = Uri.parse(fullUrl);
    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

5 个答案:

答案 0 :(得分:3)

这意味着此方法位于无法访问上下文的类中。因此,您可以从使用此方法的活动传递上下文,也可以将此方法放在该活动的类中。

答案 1 :(得分:1)

你应该从构造函数中得到一个上下文:

public class YourClass{
   private Context context;

   public YourClass(Context context) {
       this.context = context;
   }
   ...
   public void openWeb(String url) {
      String fullUrl = "http://bit.do/"+url;
      Uri webpage = Uri.parse(fullUrl);
      Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
      if (intent.resolveActivity(getPackageManager()) != null) {
         context.startActivity(intent);
      } 
   }

}

答案 2 :(得分:0)

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

答案 3 :(得分:0)

您似乎必须使用intent.setData传递uri。尝试这样做,

String url = "your url";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

答案 4 :(得分:-1)

假设您使用的是fragment

尝试:

getActivity().startActivity(i);

此处getActivity()会返回context