android shortcuts and must have gists

###Making use of shared preferences for storing information


    public boolean getStoredLoginState() {
        prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
        boolean state = prefs.getBoolean(B_LOGGED_IN_STATE, false);
        return state;
    }

    public void setLoggedInState(boolean isLoggedIn) {
        prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();

        editor.putBoolean(B_LOGGED_IN_STATE, isLoggedIn);
        editor.commit();
    }

###Making use of the redirection trick

Let’s say you want to make sure the user is logged in before giving him access to a particular activity view. What you can do is to check the status of the login token through a shared preference and send back an intent with the intent that the current view was invoked with via an extra Intent parameter

This is the code for the invoker:

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail_view);

        if (getStoredLoginState() == true) {
            Intent intent = this.getIntent();
            Log.i(TAG, "DetailView onCreate recd position of item: " + intent.getIntExtra(ITEM_ID, 10));

            int pos = intent.getIntExtra(ITEM_ID, 10);

            // Set the text
            TextView textView = (TextView) findViewById(R.id.textView1);

            textView.setText(" " + pos);
        } else {
            // not logged in

            Intent intent = this.getIntent();
            Intent newIntent = new Intent(this, LoginActivity.class);
            newIntent.putExtra(REDIRECT_INTENT, intent);
//            newIntent.setAction(Intent.ACTION_MAIN);
            newIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

            startActivity(newIntent);
        }
    }

And this is the login view code. Note that in the invoker’s code we use the Intent.FLAG_ACTIVITY_NO_HISTORY to make sure that the call does not stay in the stack since login is something we need to ensure out of navigation:

@Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, "LoginActivity onCreate() hit");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "Login State: " + getStoredLoginState());

        // Check for a redirect
        Intent intent = getIntent();
        redirect_intent = intent.getParcelableExtra(REDIRECT_INTENT);

        if (redirect_intent != null) {
            Log.i(TAG, "LoginActivity : this is a redirect intent " + redirect_intent);
        }
    }

    public void onBtnSubmitClicked(View view) {
        TextView username = (TextView) findViewById(R.id.editText);
        TextView password = (TextView) findViewById(R.id.editText1);

        if (isValidLogin(username.getText().toString(), password.getText().toString())) {
            isLoggedIn = true;
            Log.i(TAG, "LoginActivity onBtnSubmitClicked() Username Password match");
        } else {
            isLoggedIn = false;
            new AlertDialog.Builder(this)
                    .setTitle("Wrong username/password")
                    .setMessage("You have entered wrong username/password")
                    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // continue with delete
                        }
                    })
                    .show();
        }

        setLoggedInState();

        if (isLoggedIn) {
            Log.i(TAG, "LoginActivity onBtnSubmitClicked starting List View Activity");
            if (redirect_intent != null) {
                // this will make the activity pop up back from the Task stack
                redirect_intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(redirect_intent);
            } else {
                Intent intent = new Intent(this, ListActivity.class);
                startActivity(intent);
            }
        }
    }

More information available at the Android Documentation

Cheers