【问题标题】:Open an url without using Browser不使用浏览器打开网址
【发布时间】:2016-03-02 14:50:07
【问题描述】:

我正在寻找一种在应用程序上而不是在浏览器中打开 URL 的方法。我发现了同样的问题here 并且有人提到如果不使用浏览器就无法从应用程序中打开 url。有人可以建议或展示一种无需使用浏览器即可打开网址的方法吗?

任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 当然可以使用WebView
  • 我用 webview 试过了。它实际上不起作用
  • 什么不起作用? java脚本?它根本不渲染吗?
  • 我试图在带有顶部和底部栏的布局中打开 url。当它在 webview 上加载 url 时,它会打开但没有顶部和底部栏。我启用了 javascript,webviewsetting。但它仍然没有打开顶部和底部栏。
  • 所以顶部和底部栏来自网站?或者你的布局中有它们?

标签: android url web webview


【解决方案1】:

您可以使用网页视图在您的应用中打开网址。这是关于它的官方谷歌文档http://developer.android.com/reference/android/webkit/WebView.html

【讨论】:

  • 我试图在带有顶部和底部栏的布局中打开 url。当它在 webview 上加载 url 时,它会打开但没有顶部和底部栏。我启用了 javascript,webviewsetting。但它仍然没有打开顶部和底部栏
【解决方案2】:

您可以在新的活动或片段中使用 webview

如果你想要样品然后问我

package com.bala.computer.ojooo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class OjoooMain extends AppCompatActivity {

    WebView mWebView;
    AdView mAdView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ojooo_main);

        final ProgressBar Pbar;
        //final TextView txtview = (TextView)findViewById(R.id.tV1);
        Pbar = (ProgressBar) findViewById(R.id.pB1);

        mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

        getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

        mWebView = (WebView) findViewById(R.id.ojoooview);
        mWebView.getSettings().setLoadWithOverviewMode(true);
        mWebView.getSettings().setUseWideViewPort(true);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mWebView.loadUrl("http://wad.ojooo.com/register.php?ref=legendbalaraja");
        mWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        mWebView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                if (progress < 100 && Pbar.getVisibility() == ProgressBar.GONE) {
                    Pbar.setVisibility(ProgressBar.VISIBLE);
                    //txtview.setVisibility(View.VISIBLE);
                }
                Pbar.setProgress(progress);
                if (progress == 100) {
                    Pbar.setVisibility(ProgressBar.GONE);
                    //txtview.setVisibility(View.GONE);
                }
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_ojooo_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <WebView
        android:id="@+id/ojoooview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dp" />

    <ProgressBar
        android:id="@+id/pB1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:padding="2dip" />

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">

    </com.google.android.gms.ads.AdView>


</RelativeLayout>

从您的主要活动或活动中,您有按钮放置您的意图代码以打开 webview 活动并在通过意图单击按钮时传递 url

并在 webview 活动中以字符串形式获取它并在加载 url 中使用它

【讨论】:

  • 如果您能提供样品我们将不胜感激
  • 您打开网址的代码。感谢那。但它没有在我要求的布局中打开,其中顶部和底部栏位于。似乎 url 在没有顶部和底部栏的不同布局上打开。您可以在下面的链接facebook.com/… 中看到我想要打开 url 的所需布局
  • 当按钮在同一个活动或不同活动中点击加载url?
  • 好的,跳过我给你的。在您的活动中粘贴来自 xml“webview 和进度条”的代码,并在 java 中放置与 webview 和 pregress bar 相关的代码
【解决方案3】:

类 FileUrlViewer : AppCompatActivity() {

var webView: WebView? = null

@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: 
                                   Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.file_url_viewer)
    val webView: WebView = 
           findViewById(R.id.fileUrlPreviewWV)

    webView.setVisible(true)

    clearCookies()
    
   CookieManager.getInstance().
     setAcceptCookie(true)
    webView.settings.builtInZoomControls = 
                                        true
    webView.settings.javaScriptEnabled = true
    webView.settings.domStorageEnabled = true
    webView.settings.loadWithOverviewMode 
                                      =true
    webView.settings.useWideViewPort = true
          
   webView.settings.setAppCacheEnabled(false)

    webView.setBackgroundColor(Color.TRANSPARENT)

    
    webView.webViewClient = object : WebViewClient() {

       var timeOut: Boolean = true

        override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
            view?.loadUrl(url)
            return true
        }


        override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
            handler!!.proceed()
        }

        override fun onPageStarted(view: 
              WebView?, url: String?, favicon: 
                              Bitmap?) {
            super.onPageStarted(view, url, 
                                      favicon)


      thread{
         run(){
            timeOut = true
            try {
                Thread.sleep(60000)
            }catch (e: InterruptedException){
                e.printStackTrace()
            }
            if (timeOut) {
                
            Toast.makeText(this@FileUrlViewer, 
            " Oh No.... Time Out!!!",
            Toast.LENGTH_LONG).show()
            }
        }
    }.start()



        }

        override fun onPageFinished(view: 
               WebView?, url: String?) {
            timeOut = false
            view!!.setVisible(true)
        }

    }

    

    
 webView.loadUrl("https://www.google.co.in/")

}

}

【讨论】:

  • 对不起,我听不懂。你希望解释什么
  • 如果你解释一下你想要做什么会更好。只有源代码不能更好地回答。这可以回答他的问题。但是,也需要解释。阅读How to write a good answerRead it also
  • 好的,谢谢您的指示
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 2013-10-08
  • 2016-07-13
  • 2022-07-06
  • 1970-01-01
  • 2013-02-06
  • 2013-01-11
  • 2020-04-13
相关资源
最近更新 更多