gpt4 book ai didi

android - 如何在 Android WebView 中获取加载的网页标题?

转载 作者:IT王子 更新时间:2023-10-28 23:55:40 25 4
gpt4 key购买 nike

我在我的应用程序中使用 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());
}
});

您将在初始化 webview 的地方执行此操作。将“ExperimentingActivity”替换为您的 Activity 名称。

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

您可以在此处获取有关我正在使用的类和函数的更多信息:

Android Developers: Activity - setTitle()

Android Developers: WebViewClient

Android Developers: WebView

关于android - 如何在 Android WebView 中获取加载的网页标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com