【问题标题】:How To Open Web Page Within My App?如何在我的应用程序中打开网页?
【发布时间】:2016-01-04 06:07:58
【问题描述】:

这是我在这里的第一个问题。我知道以前有人问过这个问题,但我没有找到真正解释像我这样的新手的答案的答案/解决方案。

我正在创建一个具有许多按钮的线性布局的应用程序,每个按钮都应该将用户引导到不同的网页。按钮运行良好,每个按钮都转到其特定的网页,但在默认浏览器中,而不是在应用程序中。

这是我的 webview.xml 文件:

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

这是 WebViewActivity.java 文件:

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(
            "http://egy-tech-droid.blogspot.com.eg/search/label/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%20%D8%AD%D8%B5%D8%B1%D9%8A%D8%A9");

}

我在 Manifest 文件中添加了互联网权限:

 <uses-permission android:name="android.permission.INTERNET" />

这将打开网页,但在设备的默认浏览器中,我希望它在我的应用程序中打开。有什么帮助吗? (请给我一个详细的答案/解释)

【问题讨论】:

标签: android webview


【解决方案1】:

将此添加到您的代码中

webView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return true;
    }
});

【讨论】:

  • java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.setWebViewClient(android.webkit.WebViewClient)' on a null object reference
【解决方案2】:

您需要设置WebViewClient 以覆盖该行为(使用网络浏览器打开链接)。

使用这个;

webview.setWebViewClient(new WebViewClient());

Android 文档说:

public void setWebViewClient(WebViewClient 客户端)

设置将接收各种通知的 WebViewClient 和 要求。这将替换当前的处理程序。

【讨论】:

    【解决方案3】:

    享受完整的代码:

    创建():

            webView = (WebView) findViewById(R.id.webView1);
    
            if(Constants.isNetworkAvailable(mContext)){
                webView.setWebViewClient(new MyWebViewClient());
                webView.setWebChromeClient(new WebChromeClient() );
    
                webView.getSettings().setJavaScriptEnabled(true);     
                webView.getSettings().setPluginState(PluginState.ON);
                webView.getSettings().setBuiltInZoomControls(true);
                webView.getSettings().setSupportZoom(true); 
    
                webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
                webView.setScrollbarFadingEnabled(false);
    
                webView.setInitialScale(30);
                webView.loadUrl(url);
    
            }else{
                Toast.makeText(mContext, Constants.msgNoInternet, Toast.LENGTH_LONG).show();
            }
    

    MyWebViewClient :

    private class MyWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
    
                if (!pDialog.isShowing()) {
                    pDialog.show();
                }
    
                return true;
            }
    
            @Override
            public void onPageFinished(WebView view, String url) {
                //view.loadUrl(url);
                System.out.println("on finish");
                if (pDialog.isShowing()) {
                    pDialog.dismiss();
                }
    
            }
        }
    

    【讨论】:

      【解决方案4】:

      Kotlin 版本 Sunny 的回答

      webView.webViewClient = object : WebViewClient() {
          override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
              view?.loadUrl(request?.url.toString())
              return true
          }
      }
      

      【讨论】:

        【解决方案5】:

        如果不考虑 Javascript,就无法谈论当今的 Web。默认情况下,它在 WebView 中的使用是不活动的。要启用 Javascript,只需插入以下代码行:

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        

        【讨论】:

          【解决方案6】:

          希望对你有帮助。

          在您的网络视图布局中:

          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/mainll"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
          
              <RelativeLayout
                  android:id="@+id/relay"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:background="#c7bbac">
          
                  <ImageView
                      android:id="@+id/txtmain"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:adjustViewBounds="true"
                      android:scaleType="fitXY"
                      android:src="@drawable/topbar50" />
          
                  <ImageView
                      android:id="@+id/backbutn"
                      android:layout_width="wrap_content"
                      android:layout_height="30dp"
                      android:adjustViewBounds="true"
                      android:paddingTop="2dp"
                      android:src="@drawable/backbtn" />
              </RelativeLayout>
          
              <WebView  
                  android:id="@+id/webView1"
                  android:layout_below="@+id/relay"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent" />
          
          </RelativeLayout>
          

          Webview 按钮 Onclick:

          webbutton = (ImageView) findViewById(R.id.web);
          webbutton.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View arg0) {
                  Intent intent = new Intent(getApplicationContext(), WebViewActivity.class);
                  startActivity(intent);
              }
          });
          

          网页浏览活动:

          public class WebViewActivity extends Activity {
          
          private WebView webViewurl;
          ImageView back;
          AndroidInterface AMW = AndroidInterface.GetInstance();
          
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.webview);
              back = (ImageView) findViewById(R.id.backbutn);
              webViewurl = (WebView) findViewById(R.id.webView1);
          
              webViewurl.getSettings().setJavaScriptEnabled(true);
          
              webViewurl.getSettings().setBuiltInZoomControls(true);
              final Activity activity = this;
              webViewurl.setWebViewClient(new WebViewClient() {
                  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                      Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
                  }
              });
              webViewurl.loadUrl("http://example.com");
          
              back.setOnClickListener(new View.OnClickListener() {
          
                  @Override
                  public void onClick(View v) {
                      // TODO Auto-generated method stub
                      finish();
                  }
              });
          }
          

          【讨论】:

          • 我应该把:Webview Button Onclick 放在哪里? ...什么是“AndroidInterface”?这是我应该添加到项目中的一个新课程吗(只是提醒你我完全是新手,所以你的答案对我来说不够清楚,但无论如何谢谢)
          • android 界面在这里无关紧要,您只需省略 Android 界面,您想要打开放置按钮的 webview 页面,在按钮的 onclick 侦听器中,您只需调用 webview 活动@M。奥马尔
          【解决方案7】:
           webView = (WebView) findViewById(R.id.youtubelink);
                  webView.getSettings().setJavaScriptEnabled(true);
                  webView.loadUrl("your url");
          
                  webView.setWebViewClient(new WebViewClient() {
          
                      @Override
                      public boolean shouldOverrideUrlLoading(WebView view, String url) {
                          view.loadUrl(url);
                          return true;
                      }
                  });
          

          【讨论】:

            【解决方案8】:

            WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.google.co.in");

            这段代码运行良好...

            以上代码在您的应用中打开链接。

            【讨论】:

            • 我认为您没有很好地阅读我的代码!.. 我已经在使用此代码,它会在默认浏览器中打开网页。
            猜你喜欢
            • 2010-10-04
            • 1970-01-01
            • 2019-07-04
            • 1970-01-01
            • 1970-01-01
            • 2023-02-08
            • 1970-01-01
            • 1970-01-01
            • 2013-02-24
            相关资源
            最近更新 更多