2015-10-07 40 views
4

這是我的第一個問題。我知道這個問題之前已經被問過,但是我沒有找到一個答案/解決方案來真正解釋像我這樣的全新手的答案。如何在我的應用程序中打開網頁?

我正在創建一個具有很多按鈕的線性佈局的應用程序,每個按鈕都應該將用戶驅動到不同的網頁。這些按鈕效果很好,每個按鈕都會轉到其特定的網頁,但在默認瀏覽器中,不在應用程序內。

這是我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"); 

} 

我加入了互聯網許可,清單文件:

​​

這將打開網頁,但在設備的默認瀏覽器中,我希望它在我的應用程序內部打開。任何幫助? (請給我一個詳細的解答/解說)

+0

將'WebViewClient'設置爲您的webView以打開帶有應用程序的網頁http://stackoverflow.com/questions/6850017/how-to-set-webview-client –

+0

看看這裏http://www.tutorialspoint。 com/android/android_webview_layout.htm –

+0

[Android webview在調用loadurl時啓動瀏覽器]可能重複(http://stackoverflow.com/questions/7746409/android-webview-launches-browser-when-calling-loadurl) –

回答

2

添加到您的代碼

webView.setWebViewClient(new WebViewClient(){ 

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

它的工作。非常感謝。 –

1

你需要建立一個WebViewClient以覆蓋該行爲(打開使用Web瀏覽器鏈接)。

使用此;

webview.setWebViewClient(new WebViewClient()); 

Android文檔說:

公共無效setWebViewClient(WebViewClient客戶端)

設置將接收各種通知和 請求WebViewClient。這將取代當前的處理程序。

-1

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

此代碼正常工作...

上面的代碼打開您的應用程序中的鏈接。

+0

我認爲你沒有很好地閱讀我的代碼!我已經在使用這段代碼,它會在默認瀏覽器中打開網頁。 –

0

享受全碼:

的OnCreate():

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

     } 
    } 
0

我希望這會幫助你。

在Web視圖佈局:

<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> 

網頁視圖按鈕的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(); 
     } 
    }); 
} 
+0

我應該在哪裏放置:Webview按鈕Onclick? ...什麼是「AndroidInterface」?是一個新的類,我應該添加到該項目(只是提醒你,我是完全新手,所以你的答案不夠清楚,但我要感謝任何方式) –

+0

Android界面並不重要,你只是省略了Android界面,在那裏你要打開放置按鈕的webview頁面,在onclick的按鈕中,你只需調用webview的activity @M.Omar – YUVRAJ

0

科特林版朗逸的回答

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