package com.common.utils.social;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.common.utils.R;
public class OAuthActivity extends Activity {
private static final String PARAM_URL_TO_LOAD = "OAuthActivity.PARAM_URL_TO_LOAD";
private static final String PARAM_CALLBACK = "OAuthActivity.PARAM_CALLBACK";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.asn_activity_oauth);
final String paramUrlToLoad = getIntent().getStringExtra(PARAM_URL_TO_LOAD);
final String paramCallback = getIntent().getStringExtra(PARAM_CALLBACK);
if (TextUtils.isEmpty(paramUrlToLoad)) {
throw new IllegalArgumentException("required PARAM_URL_TO_LOAD");
}
if (TextUtils.isEmpty(paramCallback)) {
throw new IllegalArgumentException("required PARAM_CALLBACK");
}
WebView webView = (WebView) findViewById(R.id.web_view);
final View progressContainer = findViewById(R.id.progress_container);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressContainer.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressContainer.setVisibility(View.GONE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains(paramCallback)) {
Intent intent = new Intent();
intent.setData(Uri.parse(url));
setResult(RESULT_OK, intent);
finish();
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Intent intent = new Intent();
intent.setAction(description);
setResult(RESULT_CANCELED, intent);
finish();
}
});
webView.loadUrl(paramUrlToLoad);
}
}