package com.lgq.rssreader; import java.io.UnsupportedEncodingException; import org.apache.http.entity.StringEntity; import org.json.JSONException; import org.json.JSONObject; import com.lgq.rssreader.core.Config; import com.lgq.rssreader.core.ReaderApp; import com.lgq.rssreader.enums.Token; import com.lgq.rssreader.parser.FeedlyParser; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.JsonHttpResponseHandler; import android.app.Activity; import android.app.Fragment; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebView; import android.webkit.WebViewClient; public class LoginActivity extends BaseActivity { public LoginActivity(){ super("#00BCD5"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initViews(); } private void initViews(){ WebView view = (WebView) findViewById(R.id.page); final ProgressDialog mProgressDialog = new ProgressDialog(this); mProgressDialog.setTitle(getResources().getString(R.string.login_title)); mProgressDialog.setMessage(getResources().getString(R.string.login_msg)); mProgressDialog.show(); view.getSettings().setJavaScriptEnabled(true); view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); view.setWebViewClient(new WebViewClient(){ // public boolean shouldOverrideUrlLoading(WebView view, String url) { // Log.i("RssReader", url); // return true; // } // // public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm){ // Log.i("RssReader", host + "-" + realm); // } public void onPageFinished (WebView view, String url){ Log.i("RssReader", "finished " + url); //if(url == Config.LOGIN_URL){ mProgressDialog.hide(); //}else{ if(url.contains("code=")){ mProgressDialog.setMessage(ReaderApp.getAppContext().getResources().getString(R.string.login_authing)); mProgressDialog.show(); String params = url.substring(url.indexOf("?") + 1); String code = ""; for(String p : params.split("&")){ if(p.contains("code")){ code = p.split("=")[1]; break; } } AsyncHttpClient client = new AsyncHttpClient(); String actionParams = "client_id=feedly&client_secret=0XP4XQ07VVMDWBKUHTJM4WUQ&grant_type=authorization_code&" + "redirect_uri=http%3A%2F%2Fwww.feedly.com%2Ffeedly.html&code=" + code; StringEntity se = null; try { se = new StringEntity(actionParams.toString()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return; } client.post(null, FeedlyParser.FEEDLYLOGINURL, se, " application/x-www-form-urlencoded", new JsonHttpResponseHandler(){ public void onSuccess(JSONObject result){ try { ReaderApp.setToken(Token.AccessToken, result.getString("access_token")); ReaderApp.setToken(Token.RefreshToken, result.getString("refresh_token")); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } mProgressDialog.dismiss(); Intent intent = new Intent(); setResult(Activity.RESULT_OK, intent); LoginActivity.this.finish(); } }); } //} } }); view.loadUrl(Config.LOGIN_URL); } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { if(ReaderApp.getProfile() == null) return false; else return super.onKeyDown(keyCode, event); } return super.onKeyDown(keyCode, event); } }