繁体   English   中英

如何获取标题onPageFinished()(webview)?

[英]how to get title onPageFinished() (webview)?

我有个问题。 我在我的项目中使用WebView对象。 MainActivity.java代码方面,我使用webbBrowser.setWebViewClient(new ViewBrowser());

还有第二个类,名为ViewBrowser.java,该文件通过WebViewClient扩展。

通过在此java文件中使用此客户端服务,有2个功能覆盖

1- shouldOverrideUrlLoading(WebView视图,字符串url)
2- onPageFinished(WebView视图,字符串url)

onPageFinished()中,我使用过view.getTitle(); 我想在MainActivity类上将此标题设置为TextView。 任何人都可以帮我这个忙。

这是我的MainActivity.java类:

public class MainActivity extends Activity implements OnClickListener {

Button bttnSearch;
EditText txttInput;
TextView txttView;
WebView webbBrowser;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);

    bttnSearch = (Button) findViewById(R.id.btnGo);
    txttInput = (EditText) findViewById(R.id.txtInput);
    txttView = (TextView) findViewById(R.id.txtView);
    webbBrowser = (WebView) findViewById(R.id.broWebView);

    webbBrowser.setWebViewClient(new ViewBrowser());
    webbBrowser.getSettings().setLoadsImagesAutomatically(true);
    webbBrowser.getSettings().setJavaScriptEnabled(true);
    webbBrowser.getSettings().setLoadWithOverviewMode(true);
    webbBrowser.getSettings().setUseWideViewPort(true);
    webbBrowser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webbBrowser.setScrollbarFadingEnabled(true);

    webbBrowser.loadUrl("http:/www.google.com");

    bttnSearch.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    String urlText;
    urlText = txttInput.getText().toString();

    switch(v.getId()){
    case R.id.btnGo:
        InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        webbBrowser.loadUrl(urlText);

        break;
    }       
}   }

这是我的ViewBrowser.java:

public class QaziViewBrowser extends WebViewClient {

//private Toast txttView;

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // TODO Auto-generated method stub
    view.loadUrl(url);
    return super.shouldOverrideUrlLoading(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    // TODO Auto-generated method stub
    super.onPageFinished(view, url); 
    // i want to get Title text of the web page and set to txttView
}


}

在您创建活动中注册像这样的广播

registerReceiver(updateText, new IntentFilter("UPDATE_TEXT"));

onDestroy注销

unregisterReceiver(updateText);

制作广播接收者

BroadcastReceiver updateText = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "onReceive()");
        // check if intent is not null and other verification if needed
         TextView.setText(intent.getStringExtra("title"));
    }
};

在您的webview课中,您要做的是fire boradcast,将标题设为意图

        Intent intentToBroadcast = new Intent("UPDATE_TEXT");
        intentToBroadcast.putExtra(title, webview.getTitle());   
        mContext.sendBroadcast(intentToBroadcast);

我还没有测试运行这段代码,但这是可以工作的逻辑,希望对您有所帮助。

它很简单。

在回调onPageFinished中,您可以获取已加载页面的标题。

@Override
public void onPageFinished(WebView view, String url) {
    // TODO Auto-generated method stub
    super.onPageFinished(view, url); 
    // i want to get Title text of the web page and set to txttView
    String title = view.getTitle();
    // Use title where ever and which ever way you want.
}

您可以使用Jsoup库(下载链接: http ://jsoup.org/)。

和onPageFinished()方法使用以下代码

    onPageFinished(WebView view, String url){
         new ContentDownloader(url).execute();
    }

    private class ContentDownloader extends AsyncTask<Void, Void, Void>
    {
        Document document;
        String url;

        public ContentDownloader(String p_url)
        {
            url = p_url;
        }

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
            m_progressDialog = ProgressDialog.show(MainActivity.this, "Wait", "Content Downloading..");
        }

        @Override
        protected Void doInBackground(Void... params)
        {
            try
            {
                document = Jsoup.connect(url).post();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result)
        {
            if(document != null) {
                m_tvTitle.setText(m_document.title());
            }

            m_progressDialog.dismiss();
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM