package com.socioboard.t_board_pro; import java.util.ArrayList; import com.socioboard.t_board_pro.adapters.Viewpageradapter; import com.socioboard.t_board_pro.twitterapi.TwitterAccessTokenPost; import com.socioboard.t_board_pro.twitterapi.TwitterSignIn; import com.socioboard.t_board_pro.util.IntroViewPagerModel; import com.socioboard.t_board_pro.util.MainSingleTon; import com.socioboard.t_board_pro.util.ModelUserDatas; import com.socioboard.t_board_pro.util.TboardproLocalData; import com.socioboard.tboardpro.R; import com.viewpagerindicator.PageIndicator; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class WelcomeActivity extends Activity { ImageView loginButton; TboardproLocalData twiterManyLocalData; public String requestAccessToken, requestAccessSecret; boolean callBackConfirm = false; Dialog webDialog; WebView webView; ProgressDialog progressDialog; ProgressBar webViewProgress; PageIndicator indicator; Viewpageradapter viewpageradapter; ArrayList<IntroViewPagerModel> arrayList = new ArrayList<IntroViewPagerModel>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); progressDialog = new ProgressDialog(WelcomeActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setIndeterminate(true); progressDialog.setCancelable(false); ViewPager pager = (ViewPager) findViewById(R.id.pager); indicator = (PageIndicator) findViewById(R.id.indicator); loginButton = (ImageView) findViewById(R.id.loginbtn); IntroViewPagerModel model = new IntroViewPagerModel(); model.setDrawable(R.drawable.intro_screen1); model.setIntro_text(MainSingleTon.introtext1); arrayList.add(model); IntroViewPagerModel model2 = new IntroViewPagerModel(); model2.setDrawable(R.drawable.intro_screen2); model2.setIntro_text(MainSingleTon.introtext2); arrayList.add(model2); IntroViewPagerModel model3 = new IntroViewPagerModel(); model3.setDrawable(R.drawable.intro_screen3); model3.setIntro_text(MainSingleTon.introtext3); arrayList.add(model3); IntroViewPagerModel model4 = new IntroViewPagerModel(); model4.setDrawable(R.drawable.intro_screen4); model4.setIntro_text(MainSingleTon.introtext4); arrayList.add(model4); IntroViewPagerModel model5 = new IntroViewPagerModel(); model5.setDrawable(R.drawable.intro_screen5); model5.setIntro_text(MainSingleTon.introtext5); arrayList.add(model5); IntroViewPagerModel model6 = new IntroViewPagerModel(); model6.setDrawable(R.drawable.intro_screen6); model6.setIntro_text(MainSingleTon.introtext6); arrayList.add(model6); IntroViewPagerModel model7 = new IntroViewPagerModel(); model7.setDrawable(R.drawable.intro_screen7); model7.setIntro_text(MainSingleTon.introtext7); arrayList.add(model7); viewpageradapter = new Viewpageradapter(getApplicationContext(), arrayList); pager.setAdapter(viewpageradapter); indicator.setViewPager(pager); twiterManyLocalData = new TboardproLocalData(getApplicationContext()); myprint("onCreate "); loginButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { progressDialog.setMessage("Signing in to Twitter.."); progressDialog.show(); new GetReqToken().execute(); } }); CookieSyncManager.createInstance(getApplicationContext()); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.removeAllCookie(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Pass the activity result to the login button. } void myprint(Object msg) { System.out.println(msg.toString()); } public void setDetailsAccessTokens() { myprint("setDetailsAccessTokens"); twiterManyLocalData.deleteThisUserData(MainSingleTon.currentUserModel.getUserid()); twiterManyLocalData.addNewUserAccount(MainSingleTon.currentUserModel); SharedPreferences preferences = getSharedPreferences("twtboardpro", Context.MODE_PRIVATE); Editor editor = preferences.edit(); editor.putString("userid", MainSingleTon.currentUserModel.getUserid()); myprint("editor " + editor.commit()); Intent in = new Intent(WelcomeActivity.this, SplashActivity.class); startActivity(in); WelcomeActivity.this.finish(); } public class GetReqToken extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { TwitterSignIn twitterSignIn = new TwitterSignIn(); String responseTokens = twitterSignIn.postForRequestToken(); myprint("GetReqToken responseTokens =" + responseTokens); return responseTokens; } @Override protected void onPostExecute(String responseTokens) { super.onPostExecute(responseTokens); if (responseTokens == null) { myToastL("Sorry Unable to process"); hideProgress(); } else { extractBaseString(responseTokens); } } } public class GetAccessToken extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { progressDialog.setMessage("Almost completed.."); showProgress(); TwitterAccessTokenPost twitterSignIn = new TwitterAccessTokenPost(); String responseTokens = twitterSignIn.postForAccessToken(params[0], params[1]); myprint("GetReqToken responseTokens =" + responseTokens); return responseTokens; } @Override protected void onPostExecute(String responseTokens) { super.onPostExecute(responseTokens); hideProgress(); if (responseTokens == null) { myToastL("process failed!"); } else { extractAccesTokenSecret(responseTokens); } } } void extractBaseString(String baseString) { // Token int startInd = baseString.indexOf("=") + 1, endInd = baseString.indexOf("&"); requestAccessToken = baseString.substring(startInd, endInd); myprint("requestAccessToken " + requestAccessToken); // Secret String tmp = baseString.substring(endInd + 2); startInd = tmp.indexOf("=") + 1; endInd = tmp.indexOf("&"); requestAccessSecret = tmp.substring(startInd, endInd); myprint("requestAccessSecret " + requestAccessSecret); callBackConfirm = baseString.contains("=true"); myprint("callBackConfirm " + callBackConfirm); Editor editor = getSharedPreferences("twtboardpro", Context.MODE_PRIVATE).edit(); editor.putString("oauth_token", requestAccessToken); editor.putString("oauth_token_secret", requestAccessSecret); myprint("editor " + editor.commit()); loadSignInWebView(); } void extractAccesTokenSecret(String baseString) { MainSingleTon.currentUserModel = new ModelUserDatas(); // .................................................. String[] array1 = baseString.split("&"); String[] arrayaccessToken = array1[0].split("="); String[] arrayTokenSecret = array1[1].split("="); String[] arrayUserID = array1[2].split("="); String[] arrayScreenName = array1[3].split("="); MainSingleTon.currentUserModel.setUserAcessToken(arrayaccessToken[1]); MainSingleTon.currentUserModel.setUsersecretKey(arrayTokenSecret[1]); MainSingleTon.currentUserModel.setUserid(arrayUserID[1]); MainSingleTon.currentUserModel.setUsername(arrayScreenName[1]); // ................................................. myprint(MainSingleTon.currentUserModel); setDetailsAccessTokens(); } public void loadSignInWebView() { hideProgress(); new Handler().post(new Runnable() { @Override public void run() { webDialog = new Dialog(WelcomeActivity.this); webDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); webDialog.setCancelable(true); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); Window window = webDialog.getWindow(); lp.copyFrom(window.getAttributes()); // This makes the dialog take up the full width lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(lp); webDialog.setContentView(R.layout.signin_webview); webDialog.setCancelable(true); String webLoadSignInUrl = MainSingleTon.signInRequestURL + requestAccessToken; myprint("webLoadSignInUrl = " + webLoadSignInUrl); webView = (WebView) webDialog.findViewById(R.id.dialogue_web_view); webViewProgress = (ProgressBar) webDialog.findViewById(R.id.progressBar1); webView.setWebViewClient(new MyWebClient()); webView.setVerticalScrollBarEnabled(false); webView.setHorizontalScrollBarEnabled(false); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(webLoadSignInUrl); webDialog.show(); } }); } @Override // Detect when the back button is pressed public void onBackPressed() { super.onBackPressed(); if (webDialog != null) { if (webDialog.isShowing()) { webDialog.dismiss(); } } } class MyWebClient extends WebViewClient { private String TAG = "tag"; @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d(TAG, "Redirecting URL" + url); if (url.startsWith(MainSingleTon.oauth_callbackURL)) { myprint("final response to get tokens " + url); String url1 = url.replace(MainSingleTon.oauth_callbackURL + "?", ""); String[] tokenarray = url1.split("&"); myprint("After Replacement " + url1); if (tokenarray.length == 0) { webDialog.dismiss(); myprint("tokenarray.length == 0 "); myprint("Failed!!!!!!!!"); } try { String[] oauthtokenrray = tokenarray[0].split("="); String[] oauthverifier = tokenarray[1].split("="); System.out.println("@@@@@@@@@@@@@ " + oauthtokenrray[1] + "++++++++++++ " + oauthverifier[1]); new GetAccessToken().execute(oauthtokenrray[1], oauthverifier[1]); } catch (Exception exception) { System.out.println("ex" + exception); } webView.destroy(); webDialog.dismiss(); return true; } return false; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.d(TAG, "Page error: " + description); super.onReceivedError(view, errorCode, description, failingUrl); webViewProgress.setVisibility(View.INVISIBLE); myprint("onReceivedError errorCode " + errorCode); myprint("description description " + description); myprint("description failingUrl " + failingUrl); webDialog.dismiss(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.d(TAG, "Loading URL: " + url); super.onPageStarted(view, url, favicon); myprint("onPageStarted favicon " + favicon); webViewProgress.setVisibility(View.VISIBLE); if (url.startsWith("https://twitter.com/login/error?")) { new AlertDialog.Builder(WelcomeActivity.this).setTitle("SignIn failed!") .setMessage( "The username and password you entered did not match our records. Please double-check and try again.") .setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { webDialog.dismiss(); } }).setIcon(android.R.drawable.ic_dialog_alert).show().setCancelable(false); } else { } } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Log.d(TAG, "onPageFinished URL: " + url); webViewProgress.setVisibility(View.INVISIBLE); myprint("onPageFinished title " + view.getTitle()); } } void myToastS(final String toastMsg) { Toast.makeText(getApplicationContext(), toastMsg, Toast.LENGTH_SHORT).show(); } void myToastL(final String toastMsg) { Toast.makeText(getApplicationContext(), toastMsg, Toast.LENGTH_LONG).show(); } void showProgress() { runOnUiThread(new Runnable() { @Override public void run() { progressDialog.show(); } }); } void hideProgress() { runOnUiThread(new Runnable() { @Override public void run() { progressDialog.cancel(); } }); } }