【问题标题】:Can't resolve method 'startActivity(android.content.Intent); - Open URL on android device无法解析方法'startActivity(android.content.Intent); - 在安卓设备上打开 URL
【发布时间】:2016-05-18 10:14:38
【问题描述】:

我正在尝试调用一个函数来打开具有给定 url 的浏览器,但收到此错误消息。

我看了这两个问题,明白我可能有上下文问题,但仍然不太明白如何解决它。

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);
    }
}

【问题讨论】:

  • 你想在什么样的课堂上做这个?它是否扩展ActivityServiceBroadcastReceiverApplication
  • 它扩展了Activity

标签: java android android-intent


【解决方案1】:

这意味着这个方法在一个不能访问上下文的类中。因此,您可以从使用此方法的 Activity 传递上下文,也可以将此方法放在该 Activity 的类中。

【讨论】:

    【解决方案2】:

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

    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);
          } 
       }
    
    }
    

    【讨论】:

      【解决方案3】:
      String url = "http://www.example.com";
      Intent i = new Intent(Intent.ACTION_VIEW);
      i.setData(Uri.parse(url));
      startActivity(i);
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          假设您使用的是fragment

          试试看:

          getActivity().startActivity(i);
          

          这里getActivity()返回context

          【讨论】:

          • 我试过了,结果却是“无法解析方法 getActivity()”
          猜你喜欢
          • 1970-01-01
          • 2016-01-15
          • 2016-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-18
          • 1970-01-01
          • 2023-03-30
          相关资源
          最近更新 更多