【问题标题】:How to open button click url in default browser or webview如何在默认浏览器或 webview 中打开按钮单击 url
【发布时间】:2025-12-29 15:35:06
【问题描述】:

单击按钮后如何在webview 或默认浏览器中打开网址?目前,当我单击btn1 按钮时,它会提示我从手机中选择一个浏览器。我想在默认浏览器或webview 中打开此网址。

这是我的java代码:

 public class myactivity extends Activity {

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button bt1 = (Button) findViewById(R.id.btn_click_login);
    btn_login.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
             Intent myWebLink = new Intent(android.content.Intent.ACTION_VIEW);
             myWebLink.setData(Uri.parse("http://google.com"));
             startActivity(myWebLink);
          }
         }
     );
}

【问题讨论】:

  • 您提出了 10 个问题,但没有一个被您接受。如果你有正确的答案?
  • 正如@imrankhan 所暗示的那样,如果您接受正确的答案,您将获得更好的帮助。
  • 兄弟们,我没有得到正确的答案,如果我得到一个,我会接受..对不起,我没有运气!!!!
  • @sam 这个问题甚至没有得到回答,我得到了一个答案,但那是针对 android 浏览器而不是针对 webview..
  • @LaChi 你的老问题没有得到回答不是再次发布它的理由,如果你像这样转发,你就是在“乱扔垃圾”网站。此外,您想要做的事情非常基本,如果您在此站点和开发人员文档中四处搜索,您会发现无数示例。

标签: android android-layout android-intent


【解决方案1】:

给你。

确保在清单中包含<uses-permission android:name="android.permission.INTERNET"/>

Intent internetIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
internetIntent.setComponent(new ComponentName("com.android.browser","com.android.browser.BrowserActivity"));
internetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(internetIntent);

【讨论】:

  • android.content.ActivityNotFoundException:找不到明确的活动类
【解决方案2】:

可以试试这个你的意图

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));

在你的代码中

 public void onClick(View v) {
             Intent myWebLink = new Intent(android.content.Intent.ACTION_VIEW);
             myWebLink.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));
             myWebLink.setData(Uri.parse("http://google.com"));
             startActivity(myWebLink);
       }

【讨论】:

    【解决方案3】:

    在 android 中有两种类型的意图:

    显式意图:明确指定目标组件的位置。 隐式 Intents:没有指定目标组件,而是提供了一些其他字段,即 Data、Action、Category.. 并根据这些字段(属性)android 系统过滤活动或组件来处理意图。

    并且您正在使用 Implicit Intent,它会列出所有可以在 Action_VIEW 上工作的活动,以及指定的 URI。为避免这种情况,您只能选择通过其他参数限制 Android 系统进一步过滤,或将其更改为 Explicit Intent。并且要将其更改为显式意图,您需要目标组件名称。

    【讨论】:

      【解决方案4】:

      在布局 xml 中放置一个 WebView

      <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
      
        android:gravity="center"  
        >
      
        <WebView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/web"
      />
      
      </RelativeLayout>
      

      在您的活动中获取对它的引用

      WebView mWeb = (WebView) findViewById(R.id.web);
      

      调用 loadUrl() 就可以了。

      mWeb.loadUrl("http://google.com");
      

      【讨论】:

      • 它只会在 webview 中加载这个 url,但我想加载当用户点击按钮时会打开的那个 url。
      【解决方案5】:

      这对我有用

              public void onClick(View v) {
                  Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
                  startActivity(browserIntent);
              }
      

      【讨论】: