Thursday, August 28, 2014

SharedPreferences

SessionManagement.java

import java.util.HashMap;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class SessionManagement {
       SharedPreferences pref;

       Editor editor;

       Context _context;

       int PRIVATE_MODE = 0;

       private static final String PREF_NAME = "SharedPreferences_Name";

       private static final String IS_LOGIN = "IsLoggedIn";

       public static final String KEY_UserName = "UserName";
       public static final String KEY_Password = "Password";

       @SuppressLint("CommitPrefEdits")
       public SessionManagement(Context context) {
             this._context = context;
             pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
             editor = pref.edit();
       }

       /**
        * Create login session
        * */
       public void createLoginSession(String UserName, String Password) {

             editor.putBoolean(IS_LOGIN, true);

             editor.putString(KEY_UserName, UserName);
             editor.putString(KEY_Password, Password);

             editor.commit();
       }

       public void checkLogin() {

             if (!this.isLoggedIn()) {

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

                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    _context.startActivity(i);
             }

       }

       public HashMap<String, String> getUserDetails() {
             HashMap<String, String> user = new HashMap<String, String>();

             user.put(KEY_UserName, pref.getString(KEY_UserName, null));
             user.put(KEY_Password, pref.getString(KEY_Password, null));

             return user;
       }

       public void logoutUser() {

             editor.clear();
             editor.commit();

             Intent intent;

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

             intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             _context.startActivity(intent);
       }

       public boolean isLoggedIn() {
             return pref.getBoolean(IS_LOGIN, false);
       }
}


MainActivity.java

import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

       private TextView txtMsg;
       private EditText edtName, edtPassword;
       private Button BtnLogin, BtnLogout;
       public SessionManagement session;

       @Override
       protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);

             session = new SessionManagement(getApplicationContext());

             txtMsg = (TextView) findViewById(R.id.txtMsg);
             edtName = (EditText) findViewById(R.id.edtName);
             edtPassword = (EditText) findViewById(R.id.edtPassword);
             BtnLogin = (Button) findViewById(R.id.BtnLogin);
             BtnLogout = (Button) findViewById(R.id.BtnLogout);

             BtnLogin.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                           session.createLoginSession(edtName.getText().toString(),
                                        edtName.getText().toString());

                           BtnLogout.setVisibility(View.VISIBLE);
                           BtnLogin.setVisibility(View.GONE);
                           edtName.setVisibility(View.GONE);
                           edtPassword.setVisibility(View.GONE);

                           session.checkLogin();

                           // get user data from session
                           HashMap<String, String> user = session.getUserDetails();
                           txtMsg.setText(user.get(SessionManagement.KEY_UserName));
                    }
             });

             BtnLogout.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                           session.logoutUser();
                    }
             });
       }
}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="1.5dp" >

        <TextView
            android:id="@+id/txtMsg"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:padding="3dp"
            android:text="@string/Hello"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/edtName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="1.5dp"
            android:ems="10"
            android:hint="@string/Name" >

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/edtPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="1.5dp"
            android:ems="10"
            android:hint="@string/Password"
            android:inputType="textPassword" />

        <Button
            android:id="@+id/BtnLogin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="1.5dp"
            android:text="@string/Login" />

        <Button
            android:id="@+id/BtnLogout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="1.5dp"
            android:text="@string/Logout"
            android:visibility="gone" />
    </LinearLayout>

</ScrollView>


strings.xml

<resources>

    <string name="app_name">SharedPreferences</string>
    <string name="Logout">Logout</string>
    <string name="Login">Login</string>
    <string name="Name">Name</string>
    <string name="Hello">Hello</string>
    <string name="Password">Password</string>


</resources>






Redirect to Another Application

String APP_PACKAGE_NAME = "com.example.demo";
Intent intent;

     try {

            PackageManager pm = getPackageManager();
            intent = pm.getLaunchIntentForPackage(APP_PACKAGE_NAME);
            startActivity(intent);
                                       
     } catch (Exception e) {
            
            startActivity(new Intent(Intent.ACTION_VIEW,
                 Uri.parse("market://details?id=" + APP_PACKAGE_NAME)));


     }


Note :
  • APP_PACKAGE_NAME is the package name of 2nd  Application.
  • If 2nd application is not install then it redirect to playstore for install that application.

Thursday, August 14, 2014

Gallery View Example

main.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" >

    <Gallery
        android:id="@+id/gallery1"
        android:layout_width="fill_parent"
        android:layout_height="150dp" />

    <ImageView
        android:id="@+id/selectedImage"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/img1" />

</LinearLayout>


MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery;
import android.widget.ImageView;

@SuppressWarnings("deprecation")
public class MainActivity extends Activity {

       private ImageView selectedImage;
       private Integer[] imageResIds = { R.drawable.img1, R.drawable.img2,
                    R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6,
                    R.drawable.img7, R.drawable.img8, R.drawable.img9 };

       @Override
       public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);

             selectedImage = (ImageView) findViewById(R.id.selectedImage);
             Gallery gallery = (Gallery) findViewById(R.id.gallery1);

             gallery.setSpacing(1);
             gallery.setAdapter(new GalleryImageAdapter(this));

             gallery.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View v,
                                 int position, long id) {

                           // show the selected Image
                           selectedImage.setImageResource(imageResIds[position]);
                    }
             });
       }
}


GalleryImageAdapter.java

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

@SuppressWarnings("deprecation")
public class GalleryImageAdapter extends BaseAdapter {

       private Context context;

       private Integer[] imageResIds = { R.drawable.img1, R.drawable.img2,
                    R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6,
                    R.drawable.img7, R.drawable.img8, R.drawable.img9 };

       public GalleryImageAdapter(Context context) {
             this.context = context;
       }

       public int getCount() {
             return imageResIds.length;
       }

       public Object getItem(int position) {
             return position;
       }

       public long getItemId(int position) {
             return position;
       }

       public View getView(int index, View view, ViewGroup viewGroup) {

             ImageView imageView = new ImageView(context);
             imageView.setImageResource(imageResIds[index]);
             imageView.setLayoutParams(new Gallery.LayoutParams(200, 200));
             imageView.setScaleType(ImageView.ScaleType.FIT_XY);

             return imageView;
       }
}


Output :