80,337
社区成员
发帖
与我相关
我的任务
分享
public class WebViewActivity extends Activity {
private WebView webView = null;
private ProgressDialog progressDialog = null;
private static final int DOWN_COMPLETE = 1;
private static final int AUTH_URL = 2;
private String url = null;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == DOWN_COMPLETE) {
progressDialog.dismiss();
} else if (msg.what == AUTH_URL) {
if (msg.obj == null) {
toastNullURL();
return;
} else {
setURL(msg.obj.toString());
}
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
init();
// 新启动一个线程来获得授权页面网址
new Thread() {
@Override
public void run() {
String urlStr = AuthUtil.getAuthorizationURL();
Message msg = handler.obtainMessage();
msg.what = AUTH_URL;
msg.obj = urlStr;
handler.sendMessage(msg);
}
}.start();
}
// 返回有效授权页面,并显示在WebView中
private void setURL(String url) {
this.url = url;
webView.loadUrl(url);
}
// 无返回授权页面
private void toastNullURL() {
Toast.makeText(this, R.string.auth_url_empty, 3000).show();
}
@SuppressLint("JavascriptInterface")
public void init() {
if (progressDialog == null) {
progressDialog = new ProgressDialog(this);
}
progressDialog.setTitle("正在加载中...");
progressDialog.show();
webView = (WebView) findViewById(R.id.wv_oauth);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavascriptInterface(), "Methods");
webView.setWebViewClient(new WebViewClient() {
/*
* Notify the host application that a page has finished
* loading.(non-Javadoc)
*
* @see
* android.webkit.WebViewClient#onPageFinished(android.webkit.WebView
* , java.lang.String)
*/
@SuppressLint("NewApi")
@Override
public void onPageFinished(WebView view, String url) {
if (url.equals("http://api.t.sina.com.cn/oauth/authorize")) {
String load = "javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');";
view.evaluateJavascript(load, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.i("main", value + "-----");
}
});
// view.loadUrl(load);
Intent intent = new Intent(WebViewActivity.this,
AccessTokenActivity2.class);
startActivity(intent);
// view.loadUrl(load);
}
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
// 覆盖WebChromeClient,实现更新进度框等功能
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (100 == newProgress) {
handler.sendEmptyMessage(DOWN_COMPLETE);
}
super.onProgressChanged(view, newProgress);
}
});
}
}