Saturday 28 January 2017

Android Snack Bar Tutorial

Here is code to create snackbar in your application. Here I provide simple, custom and with action call back method snack bar in this code tutorial.
       
  
First of all you have to take design support library in your gradle.
compile 'com.android.support:design:25.1.0'

Use the following code.
MainActivity.java
package com.snackbarexample;



import android.graphics.Color;

import android.os.Bundle;

import android.support.design.widget.CoordinatorLayout;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;



public class MainActivity extends AppCompatActivity {



    private CoordinatorLayout coordinatorLayout;

    private Button b_simple, b_action, b_custom;

    private FloatingActionButton fab;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);



        b_simple = (Button) findViewById(R.id.btn_simple);

        b_action = (Button) findViewById(R.id.btn_action);

        b_custom = (Button) findViewById(R.id.btn_custom);



        b_simple.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Snackbar snackbar = Snackbar

                        .make(coordinatorLayout, "Welcome to devilsparadise9", Snackbar.LENGTH_LONG);



                snackbar.show();

            }

        });



        b_action.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Snackbar snackbar = Snackbar

                        .make(coordinatorLayout, "Message deleted", Snackbar.LENGTH_LONG)

                        .setAction("UNDO", new View.OnClickListener() {

                            @Override

                            public void onClick(View view) {

                                Snackbar snackbar1 = Snackbar.make(coordinatorLayout, "Message restored!", Snackbar.LENGTH_SHORT);

                                snackbar1.show();

                            }

                        });



                snackbar.show();

            }

        });



        b_custom.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Snackbar snackbar = Snackbar

                        .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG)

                        .setAction("RETRY", new View.OnClickListener() {

                            @Override

                            public void onClick(View view) {

                            }

                        });



                // Changing message text color

                snackbar.setActionTextColor(Color.BLUE);



                // Changing action button text color

                View sbView = snackbar.getView();

                TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);

                textView.setTextColor(Color.WHITE);



                snackbar.show();

            }

        });

    }

}

activity_main.xml
<android.support.design.widget.CoordinatorLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/coordinatorLayout"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity">

    

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="vertical"

        android:paddingLeft="20dp"

        android:paddingRight="20dp">



        <Button

            android:id="@+id/btn_simple"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="30dp"

            android:text="Simple Snackbar" />



        <Button

            android:id="@+id/btn_action"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="10dp"

            android:text="Action Callback Snackbar" />



        <Button

            android:id="@+id/btn_custom"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="10dp"

            android:text="Custom Snackbar" />



    </LinearLayout>



</android.support.design.widget.CoordinatorLayout>

By using this code you can get the snack bar in your app.

Thank You..

Friday 27 January 2017

Tutorial to get current longitude latitude in android application


This in an example to get your current location as toast in your application.



AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   
package="com.getcurrentlocation">

    <
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <
uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />
    <
uses-permission android:name = "android.permission.INTERNET" />

    <
application
       
android:allowBackup="true"
       
android:icon="@mipmap/ic_launcher"
       
android:label="@string/app_name"
       
android:supportsRtl="true"
       
android:theme="@style/AppTheme">
        <
activity android:name=".MainActivity">
            <
intent-filter>
                <
action android:name="android.intent.action.MAIN" />
                <
category android:name="android.intent.category.LAUNCHER" />
            </
intent-filter>
        </
activity>
    </
application>
</
manifest>

MainActivity.java
package com.getcurrentlocation;



import android.Manifest;

import android.app.Activity;

import android.os.Bundle;

import android.support.v4.app.ActivityCompat;

import android.test.mock.MockPackageManager;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;



public class MainActivity extends Activity {



    Button btnShowLocation;

    private static final int REQUEST_CODE_PERMISSION = 2;

    String mPermission = Manifest.permission.ACCESS_FINE_LOCATION;



    // GPSTracker class

    GPSTracker gps;



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        try {

            if (ActivityCompat.checkSelfPermission(this, mPermission)

                    != MockPackageManager.PERMISSION_GRANTED) {



                ActivityCompat.requestPermissions(this, new String[]{mPermission},

                        REQUEST_CODE_PERMISSION);



                /*// If any permission above not allowed by user, this condition will

                execute every time, else your else part will work*/

            }

        } catch (Exception e) {

            e.printStackTrace();

        }



        btnShowLocation = (Button) findViewById(R.id.button);



        // show location button click event

        btnShowLocation.setOnClickListener(new View.OnClickListener() {



            @Override

            public void onClick(View arg0) {

                // create class object

                gps = new GPSTracker(MainActivity.this);



                // check if GPS enabled

                if(gps.canGetLocation()){



                    double latitude = gps.getLatitude();

                    double longitude = gps.getLongitude();



                    // \n is for new line

                    Toast.makeText(getApplicationContext(), "Your Location is - \nLat: "+ latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();

                }else{

                    // can't get location

                    // GPS or Network is not enabled

                    // Ask user to enable GPS/network in settings

                    gps.showSettingsAlert();

                }

            }

        });

    }

}

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context="com.getcurrentlocation.MainActivity">



    <Button

        android:id = "@+id/button"

        android:layout_width = "fill_parent"

        android:layout_height = "wrap_content"

        android:text = "getlocation"/>

</RelativeLayout>

GPSTracker.java
package com.getcurrentlocation;



import android.app.AlertDialog;

import android.app.Service;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.os.IBinder;

import android.provider.Settings;

import android.util.Log;



public class GPSTracker extends Service implements LocationListener {



    private final Context mContext;



    // flag for GPS status

    boolean isGPSEnabled = false;



    // flag for network status

    boolean isNetworkEnabled = false;



    // flag for GPS status

    boolean canGetLocation = false;



    Location location; // location

    double latitude; // latitude

    double longitude; // longitude



    // The minimum distance to change Updates in meters

    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters



    // The minimum time between updates in milliseconds

    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute



    // Declaring a Location Manager

    protected LocationManager locationManager;



    public GPSTracker(Context context) {

        this.mContext = context;

        getLocation();

    }



    public Location getLocation() {

        try {

            locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);



            // getting GPS status

            isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);



            // getting network status

            isNetworkEnabled = locationManager

                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);



            if (!isGPSEnabled && !isNetworkEnabled) {

                // no network provider is enabled

            } else {

                this.canGetLocation = true;

                // First get location from Network Provider

                if (isNetworkEnabled) {

                    locationManager.requestLocationUpdates(

                            LocationManager.NETWORK_PROVIDER,

                            MIN_TIME_BW_UPDATES,

                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);



                    Log.d("Network", "Network");

                    if (locationManager != null) {

                        location = locationManager

                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);



                        if (location != null) {

                            latitude = location.getLatitude();

                            longitude = location.getLongitude();

                        }

                    }

                }



                // if GPS Enabled get lat/long using GPS Services

                if (isGPSEnabled) {

                    if (location == null) {

                        locationManager.requestLocationUpdates(

                                LocationManager.GPS_PROVIDER,

                                MIN_TIME_BW_UPDATES,

                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);



                        Log.d("GPS Enabled", "GPS Enabled");

                        if (locationManager != null) {

                            location = locationManager

                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);



                            if (location != null) {

                                latitude = location.getLatitude();

                                longitude = location.getLongitude();

                            }

                        }

                    }

                }

            }



        } catch (Exception e) {

            e.printStackTrace();

        }



        return location;

    }



    /**

     * Stop using GPS listener

     * Calling this function will stop using GPS in your app

     * */



    public void stopUsingGPS(){

        if(locationManager != null){

            locationManager.removeUpdates(GPSTracker.this);

        }

    }



    /**

     * Function to get latitude

     * */



    public double getLatitude(){

        if(location != null){

            latitude = location.getLatitude();

        }



        // return latitude

        return latitude;

    }



    /**

     * Function to get longitude

     * */



    public double getLongitude(){

        if(location != null){

            longitude = location.getLongitude();

        }



        // return longitude

        return longitude;

    }



    /**

     * Function to check GPS/wifi enabled

     * @return boolean

     * */



    public boolean canGetLocation() {

        return this.canGetLocation;

    }



    /**

     * Function to show settings alert dialog

     * On pressing Settings button will lauch Settings Options

     * */



    public void showSettingsAlert(){

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);



        // Setting Dialog Title

        alertDialog.setTitle("GPS is settings");



        // Setting Dialog Message

        alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");



        // On pressing Settings button

        alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog,int which) {

                Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

                mContext.startActivity(intent);

            }

        });



        // on pressing cancel button

        alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {

                dialog.cancel();

            }

        });



        // Showing Alert Message

        alertDialog.show();

    }



    @Override

    public void onLocationChanged(Location location) {

    }



    @Override

    public void onProviderDisabled(String provider) {

    }



    @Override

    public void onProviderEnabled(String provider) {

    }



    @Override

    public void onStatusChanged(String provider, int status, Bundle extras) {

    }



    @Override

    public IBinder onBind(Intent arg0) {

        return null;

    }

}


Android Login using Session Manager

Android Login using Session Manager

In this tutorial you can see how to make login registration using session manager in android. You can use this session throughout your app and provide shared preference in your app.

If you are following my previous login registration tutorial, then you have to change it to session manager very easily.

Add this in your gradle build file.

Build.gradle
compile 'com.loopj.android:android-async-http:1.4.5'



compile files("${android.getSdkDirectory().getAbsolutePath()}" + File.separator +

        "platforms" + File.separator + "android-23" + File.separator + "optional" +

        File.separator + "org.apache.http.legacy.jar")

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   
package="com.loginwithsession">

    <
uses-permission android:name="android.permission.INTERNET" />

    <
application
       
android:allowBackup="true"
       
android:icon="@mipmap/ic_launcher"
       
android:label="@string/app_name"
       
android:supportsRtl="true"
       
android:theme="@style/AppTheme">
        <
activity android:name=".MainActivity">
            <
intent-filter>
                <
action android:name="android.intent.action.MAIN" />

                <
category android:name="android.intent.category.LAUNCHER" />
            </
intent-filter>
        </
activity>
        <
activity android:name=".Registration" />
        <
activity android:name=".Welcome"></activity>
    </
application>

</
manifest>

MainActivity.java
package com.loginwithsession;



import android.app.Dialog;

import android.app.ProgressDialog;

import android.content.Intent;

import android.os.AsyncTask;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.List;



public class MainActivity extends ActionBarActivity {



    private EditText editTextUserName;

    private EditText editTextPassword;

    Button Register;

    public static final String USER_NAME = "USERNAME";

    String username;

    String password;



    UserSessionManager session;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        session = new UserSessionManager(getApplicationContext());

        Toast.makeText(getApplicationContext(), "User Login Status: " + session.isUserLoggedIn(), Toast.LENGTH_LONG).show();

        if(session.isUserLoggedIn() == true){

            Intent intent = new Intent(getApplicationContext(),Welcome.class);

            startActivity(intent);

        }

        editTextUserName = (EditText) findViewById(R.id.editTextUserName);

        editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        Register =(Button)findViewById(R.id.register);

        Register.setOnClickListener(new View.OnClickListener() {



            @Override

            public void onClick(View view) {

                Intent intent = new Intent(MainActivity.this, Registration.class);

                startActivity(intent);

            }

        });

    }

    public void invokeLogin(View view){

        username = editTextUserName.getText().toString();

        password = editTextPassword.getText().toString();

        login(username,password);

    }



    private void login(final String username, final String password) {

        class LoginAsync extends AsyncTask<String, Void, String>{

            private Dialog loadingDialog;

            @Override

            protected void onPreExecute() {

                super.onPreExecute();

                loadingDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Loading...");

            }



            @Override

            protected String doInBackground(String... params) {

                String uname = params[0];

                String pass = params[1];

                InputStream is = null;

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

                nameValuePairs.add(new BasicNameValuePair("username", uname));

                nameValuePairs.add(new BasicNameValuePair("password", pass));

                String result = null;

                try{

                    HttpClient httpClient = new DefaultHttpClient();

                    HttpPost httpPost = new HttpPost("http://compliments.esy.es/loginm.php");

                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    HttpResponse response = httpClient.execute(httpPost);

                    HttpEntity entity = response.getEntity();

                    is = entity.getContent();

                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);

                    StringBuilder sb = new StringBuilder();

                    String line = null;

                    while ((line = reader.readLine()) != null)

                    {

                        sb.append(line + "\n");

                    }

                    result = sb.toString();

                } catch (ClientProtocolException e) {

                    e.printStackTrace();

                } catch (UnsupportedEncodingException e) {

                    e.printStackTrace();

                } catch (IOException e) {

                    e.printStackTrace();

                }

                return result;

            }



            @Override

            protected void onPostExecute(String result){

                String s = result.trim();





                loadingDialog.dismiss();

                if(s.equalsIgnoreCase("success")){



                    session.createUserLoginSession(username, password);
                    Intent i = new Intent(getApplicationContext(), Welcome.class);

                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                    // Add new Flag to start new Activity

                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                    startActivity(i);



                    finish();

                    Toast.makeText(getApplicationContext(), "success", Toast.LENGTH_LONG).show();

                }else {

                    Toast.makeText(getApplicationContext(), "Invalid User Name or Password", Toast.LENGTH_LONG).show();

                }

            }

        }

        LoginAsync la = new LoginAsync();

        la.execute(username, password);

    }

}

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:orientation="vertical"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:paddingBottom="@dimen/activity_vertical_margin"

    tools:context=".MainActivity">



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="User Name"

        android:id="@+id/textView" />



    <EditText

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/editTextUserName" />



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Password"

        android:id="@+id/textView2" />



    <EditText

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:inputType="textPassword"

        android:ems="10"

        android:id="@+id/editTextPassword" />



    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Login"

        android:onClick="invokeLogin"

        android:id="@+id/button" />



    <Button

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Register"

        android:id="@+id/register"

        android:layout_gravity="center_horizontal" />



</LinearLayout>

Regitration.java
package com.loginwithsession;



import android.app.ProgressDialog;

import android.content.Intent;

import android.os.AsyncTask;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;



public class Registration extends AppCompatActivity implements View.OnClickListener{



    private EditText editTextName;

    private EditText editTextUsername;

    private EditText editTextPassword;

    private EditText editTextEmail;

    private Button buttonRegister;

    private static final String REGISTER_URL = "http://compliments.esy.es/register.php";

    UserSessionManager session;


    @Override



    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_registration);



        session = new UserSessionManager(getApplicationContext());

        Toast.makeText(getApplicationContext(), "User Login Status: " + session.isUserLoggedIn(), Toast.LENGTH_LONG).show();

        if(session.isUserLoggedIn() == true){

            Intent intent = new Intent(getApplicationContext(),Welcome.class);

            startActivity(intent);

        }



        editTextName = (EditText) findViewById(R.id.editTextName);

        editTextUsername = (EditText) findViewById(R.id.editTextUserName);

        editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        editTextEmail = (EditText) findViewById(R.id.editTextEmail);

        buttonRegister = (Button) findViewById(R.id.buttonRegister);

        buttonRegister.setOnClickListener(this);

    }



    @Override

    public void onClick(View v) {

        if(v == buttonRegister){

            registerUser();

        }

    }



    private void registerUser() {

        String name = editTextName.getText().toString().trim().toLowerCase();

        String username = editTextUsername.getText().toString().trim().toLowerCase();

        String password = editTextPassword.getText().toString().trim().toLowerCase();

        String email = editTextEmail.getText().toString().trim().toLowerCase();

        register(name,username,password,email);

    }



    private void register(String name, String username, String password, String email) {

        String urlSuffix = "?name="+name+"&username="+username+"&password="+password+"&email="+email;

        class RegisterUser extends AsyncTask<String, Void, String>{



            ProgressDialog loading;

            @Override

            protected void onPreExecute() {

                super.onPreExecute();

                loading = ProgressDialog.show(Registration.this, "Please Wait",null, true, true);

            }



            @Override

            protected void onPostExecute(String s) {

                super.onPostExecute(s);

                loading.dismiss();

                finish();

                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();

            }



            @Override

            protected String doInBackground(String... params) {

                String s = params[0];

                BufferedReader bufferedReader = null;

                try {

                    URL url = new URL(REGISTER_URL+s);

                    HttpURLConnection con = (HttpURLConnection) url.openConnection();

                    bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                    String result;

                    result = bufferedReader.readLine();

                    return result;

                }catch(Exception e){

                    return null;

                }

            }

        }



        RegisterUser ru = new RegisterUser();

        ru.execute(urlSuffix);

    }

}

activity_registration.xml
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:orientation="vertical"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:paddingBottom="@dimen/activity_vertical_margin"

    tools:context=".Registration">



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="enter_name" />



    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:id="@+id/editTextName" />



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="choose_username" />



    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:id="@+id/editTextUserName" />



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="choose_password" />



    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:inputType="textPassword"

        android:id="@+id/editTextPassword" />



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="enter_email" />



    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:inputType="textEmailAddress"

        android:id="@+id/editTextEmail" />



    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="button_register"

        android:id="@+id/buttonRegister" />



</LinearLayout>


UserSessionManager.java
package com.loginwithsession;



import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import java.util.HashMap;



public class UserSessionManager {



    // Shared Preferences reference

    SharedPreferences pref;



    // Editor reference for Shared preferences

    Editor editor;



    // Context

    Context _context;



    // Shared pref mode

    int PRIVATE_MODE = 0;



    // Sharedpref file name

    private static final String PREFER_NAME = "AndroidExamplePref";



    // All Shared Preferences Keys

    private static final String IS_USER_LOGIN = "IsUserLoggedIn";



    // User name (make variable public to access from outside)

    public static final String KEY_NAME = "username";



    // Email address (make variable public to access from outside)

    public static final String KEY_EMAIL = "password";



    // Constructor

    public UserSessionManager(Context context){

        this._context = context;

        pref = _context.getSharedPreferences(PREFER_NAME, PRIVATE_MODE);

        editor = pref.edit();

    }



    //Create login session

    public void createUserLoginSession(String name, String email){

        // Storing login value as TRUE

        editor.putBoolean(IS_USER_LOGIN, true);



        // Storing name in pref

        editor.putString(KEY_NAME, name);



        // Storing email in pref

        editor.putString(KEY_EMAIL, email);



        // commit changes

        editor.commit();

    }



    /**

     * Check login method will check user login status

     * If false it will redirect user to login page

     * Else do anything

     * */

    public boolean checkLogin(){

        // Check login status

        if(!this.isUserLoggedIn()){



            // user is not logged in redirect him to Login Activity

            Intent i = new Intent(_context, MainActivity.class);



            // Closing all the Activities from stack

            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);



            // Add new Flag to start new Activity

            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);



            // Staring Login Activity

            _context.startActivity(i);



            return true;

        }

        return false;

    }







    /**

     * Get stored session data

     * */

    public HashMap<String, String> getUserDetails(){



        //Use hashmap to store user credentials

        HashMap<String, String> user = new HashMap<String, String>();



        // user name

        user.put(KEY_NAME, pref.getString(KEY_NAME, null));



        // user email id

        user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));



        // return user

        return user;

    }



    /**

     * Clear session details

     * */

    public void logoutUser(){



        // Clearing all user data from Shared Preferences

        editor.clear();

        editor.commit();



        // After logout redirect user to Login Activity

        Intent i = new Intent(_context, MainActivity.class);



        // Closing all the Activities

        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);



        // Add new Flag to start new Activity

        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);



        // Staring Login Activity

        _context.startActivity(i);

    }



    // Check for login

    public boolean isUserLoggedIn(){

        return pref.getBoolean(IS_USER_LOGIN, false);

    }

}

Welcome.java
package com.loginwithsession;



import java.util.HashMap;

import android.app.Activity;

import android.os.Bundle;

import android.text.Html;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;



public class Welcome extends Activity {





    // User Session Manager Class

    UserSessionManager session;



    // Button Logout

    Button btnLogout;



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_welcome);



        // Session class instance

        session = new UserSessionManager(getApplicationContext());



        TextView Name = (TextView) findViewById(R.id.lblName);





        // Button logout

        btnLogout = (Button) findViewById(R.id.btnLogout);



        Toast.makeText(getApplicationContext(),

                "User Login Status: " + session.isUserLoggedIn(),

                Toast.LENGTH_LONG).show();







        // Check user login (this is the important point)

        // If User is not logged in , This will redirect user to LoginActivity

        // and finish current activity from activity stack.

        if(session.checkLogin())

            finish();



        // get user data from session

        HashMap<String, String> user = session.getUserDetails();



        // get name

        String name = user.get(UserSessionManager.KEY_NAME);



        // Show user data on activity

        Name.setText(Html.fromHtml("Name: <b>" + name + "</b>"));



        btnLogout.setOnClickListener(new View.OnClickListener() {



            @Override

            public void onClick(View arg0) {



                // Clear the User session data

                // and redirect user to LoginActivity

                session.logoutUser();

            }

        });

    }



}

activity_welcome.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:padding="10dip">



    <TextView

        android:id="@+id/lblName"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:singleLine="true"

        android:layout_marginTop="40dip"

        android:layout_marginBottom="10dip"/>



    <Button android:id="@+id/btnLogout"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Logout"/>



</LinearLayout>


CCAvenue Payment Gateway Android Integration

CCAvenue Payment Gateway Android Integration CCAvenue payment gateway android integration using PHP RSA and Response Handling. An...