android开发分享如何在Android WebView中获取加载的网页标题?

我在我的应用程序中使用WebView,我有一个要求根据用户页面更改应用程序的标题。 我怎样才能在Android WebView中做到这一点?

我通过以下行在iphone中做到了这一点

self.title = [webPage stringByEvaluatingJavaScriptFromString:@"document.title"] @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Adds Progrss bar Support this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.webview ); // Makes Progress bar Visible getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); mWebView = (WebView) findViewById( R.id.webview ); //This is the id you gave //to the WebView in the main.xml mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setSupportZoom(true); //Zoom Control on web (You don't need this //if ROM supports Multi-Touch mWebView.getSettings().setBuiltInZoomControls(true); //Enable Multitouch if supported by ROM // Load URL Bundle b = getIntent().getExtras(); String url = b.getString("url"); Log.d(TAG, "url " + url); mWebView.loadUrl(url); // Sets the Chrome Client, and defines the onProgressChanged // This makes the Progress bar be updated. mWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress){ //Make the bar disappear after URL is loaded, and changes string to Loading... myActivity.setTitle("Loading..."); myActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded // Return the app name after finish loading if(progress == 100) myActivity.setTitle(R.string.app_name); } }); mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; // return super.shouldOverrideUrlLoading(view, url); } @Override public void onLoadResource(WebView view, String url) { // TODO Auto-generated method stub super.onLoadResource(view, url); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); ImageView logoImageView = (ImageView)findViewById(R.id.logoimage); logoImageView.setVisibility(View.GONE); Log.d(TAG, "view.getTitle() " + view.getTitle()); myActivity.setTitle(view.getTitle()); } }); } 

    你将不得不使用自定义的WebViewClient来完成这个任务。 你将覆盖onPageFinished()方法,所以当一个新的页面加载完成后,你可以设置webview到适当的标题。

    以下是上述的一个示例实现:

      WebView mWebView = (WebView) findViewById(R.id.mwebview); mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { ExperimentingActivity.this.setTitle(view.getTitle()); } }); 

    你要做的就是你正在初始化你的web视图。 将“ExperimentingActivity”replace为您的活动名称。

    如果您已经覆盖了WebViewClient,只需将此函数或代码添加到您已有的函数中即可。

    你可以在这里使用的类和函数的更多信息:

    Android开发人员:活动 – setTitle()

    Android开发人员:WebViewClient

    Android开发人员:WebView

    我的观察是,使用WebChromeClient的网页标题的时间比使用WebViewClient时间要less

     webview.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); if (!TextUtils.isEmpty(title)) { YourActivity.this.setTitle(title); } } }); 

    所以我的经验你应该使用onReceivedTitle和onPageFinished两者。 我发现有时onPageFinished你不会得到通知,如果你前端使用react-router或类似的东西。 onReceivedTitle有缺陷,因为@ michael-levy提到。

    如果你不想要整个标题,只需要一个域名,就好比如果你只想从www.google.com只显示​​“Google”,而且你有这个标题的所有查询参数。

    以上就是android开发分享如何在Android WebView中获取加载的网页标题?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      URL hostUrl= new URL(webView.getUrl()); String title = hostUrl.getHost(); title = title.startsWith("www.") ? title.substring(4) : title; 

     private WebViewClient mWvClient = new WebViewClient() { @Override public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) { String title = view.getTitle();//getTitle super.doUpdateVisitedHistory(view, url, isReload); } } 

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/512347.html

      (0)
      上一篇 2020年11月27日
      下一篇 2020年11月27日

      精彩推荐