public class MainActivity extends SherlockFragmentActivity {
private ActionBar actionBar;
private ViewPager viewPager;
private MenuItem add_contact_button;
private Boolean logged = false;
private MenuItem edit_contacts;
private MenuItem ok_button;
private MenuItem cancel_button;
private static final int REQUEST_ACCOUNT_PICKER = 2;
private Boolean rememberToRegister;
private static MainApplication sInstance;
public static Boolean doINeedToRegister= false;
private GoogleCloudMessaging gcm= null;
private final String SENDER_ID = "5*********6";
RegIdManager regIdManager = new RegIdManager();
private RegisterGcmId registerGcmId;
private String TAG = "MAIN APPLICATION GCM";
public static Sand.Builder builder;
public static Sand service;
private final String APP_NAME = "Sand";
public static SharedPreferences settings;
public static GoogleAccountCredential credential;
private final String SHARED_PREF_ACCOUNT = "ACCOUNT_PREF";
private final String ACCOUNT_NAME = "ACCOUNT_NAME";
static final String WEB_CLIENT_ID = "6**************************com";
private String accountName;
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (TextUtils.isEmpty(reg_id)){
builder = new Sand.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), null).setApplicationName(APP_NAME);
service = builder.build();
credential = GoogleAccountCredential.usingAudience(this,
"server:client_id:" + WEB_CLIENT_ID);
settings = getSharedPreferences(SHARED_PREF_ACCOUNT,MODE_PRIVATE);
setAccountName(settings.getString(ACCOUNT_NAME, null));
if (credential.getSelectedAccountName() != null) {
Toast.makeText(this, "Logged in with : " + credential.getSelectedAccountName(), Toast.LENGTH_SHORT).show();
RegIdManager.storeRegistrationId(this,"");
reg_id = RegIdManager.getRegistrationId(this);
Log.d(TAG,"REG ID: "+reg_id);
if (TextUtils.isEmpty(reg_id)){
registerGcmId = new RegisterGcmId();
Log.d(TAG,"Progress Dialog");
dialog = ProgressDialog.show(this, "", "Getting GCM id...", false, true);
registerGcmId.execute((Void) null);
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
private ViewPager.SimpleOnPageChangeListener onPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public void onPageSelected(int position) {
super.onPageSelected(position);
actionBar.setSelectedNavigationItem(position);
private void addActionBarTabs() {
actionBar = getSupportActionBar();
String[] tabs = {"Chats", "Contacts"};
for (String tabTitle : tabs) {
ActionBar.Tab tab = actionBar.newTab().setText(tabTitle)
.setTabListener(tabListener);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
private ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
switch (tab.getPosition()) {
add_contact_button.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
edit_contacts.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
add_contact_button.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
edit_contacts.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
edit_contacts.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
add_contact_button.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
add_contact_button.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
edit_contacts.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
public boolean onOptionsItemSelected(MenuItem item) {
private void onClickAddContact(){
Intent i = new Intent(this,AddContactActivity.class);
private void onClickEditContacts(){
Intent i = new Intent(this,EditContactsActivity.class);
private void setAccountName(String accountName) {
SharedPreferences.Editor editor = settings.edit();
editor.putString("ACCOUNT_NAME", accountName);
credential.setSelectedAccountName(accountName);
this.accountName = accountName;
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
catch (ActivityNotFoundException e)
Toast.makeText(this, "ActivityNotFoundException in method chooseaccount() ", Toast.LENGTH_LONG).show();
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
protected void onActivityResult(int requestCode, int resultCode,
super.onActivityResult(requestCode, resultCode, data);
case REQUEST_ACCOUNT_PICKER:
if (data != null && data.getExtras() != null) {
data.getExtras().getString(
AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
setAccountName(accountName);
SharedPreferences.Editor editor = settings.edit();
editor.putString(ACCOUNT_NAME, accountName);
class RegisterGcmId extends AsyncTask<Void, Void, Void> {
@<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
protected Void doInBackground(Void... params) {
gcm = GoogleCloudMessaging.getInstance(context);
Log.i("GCM","gcm.toString(): "+gcm.toString());
reg_id = gcm.register(SENDER_ID);
Log.i("GCM","Reg Id: "+reg_id);
service.register(reg_id);
regIdManager.storeRegistrationId(context, reg_id);
} catch (IOException ex) {
Log.e("GCM","Error :" + ex.getMessage());
catch (NullPointerException ne){
Log.e("GCM","Error null pointer :" );