首页 文章

如何获得 Headers onPageFinished()(webview)?

提问于
浏览
0

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

有第二个类名为 ViewBrowser.java 这个文件是用WebViewClient扩展的 .

通过在此java文件中使用此客户端服务,有2个函数Overrode

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

在onPageFinished()中我使用了view.getTitle();我想在MainActivity类中将此 Headers 设置为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
}


}

3 回答

  • 1

    在你的活动创建注册这样的广播

    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课程中你需要做的就是将 Headers 置于意图中

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

    我没有测试运行此代码,但这是可行的逻辑,希望它有所帮助 .

  • 1

    它很简单 .

    在回调onPageFinished中,您可以获取加载页面的 Headers .

    @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.
    }
    
  • 0

    您可以使用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();
            }
    

相关问题