Beruflich Dokumente
Kultur Dokumente
1 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
Advertise Here
Like
1.1k
Tweet
Advertise Here
1/14/2016 11:10 PM
2 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
3 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
4 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
5 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
6 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
7 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
CONFIG.PHP
<?php
/**
* Database config variables
*/
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "root");
define("DB_DATABASE", "android_api");
?>
1/14/2016 11:10 PM
8 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
DB_CONNECT.PHP
<?php
class DB_Connect {
private $conn;
// Connecting to database
public function connect() {
require_once 'include/Config.php';
?>
<?php
class DB_Functions {
private $conn;
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$db = new Db_Connect();
1/14/2016 11:10 PM
9 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
// destructor
function __destruct() {
}
/**
* Storing new user
* returns user details
*/
public function storeUser($name, $email, $password) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // encrypted password
$salt = $hash["salt"]; // salt
return $user;
} else {
return false;
}
/**
* Get user by email and password
*/
public function getUserByEmailAndPassword($email, $password) {
if ($stmt->execute()) {
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $user;
} else {
return NULL;
}
/**
* Check user is existed or not
1/14/2016 11:10 PM
10 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
// user existed
$stmt->close();
return true;
} else {
// user not existed
$stmt->close();
return false;
}
/**
* Encrypting password
* @param password
* returns salt and encrypted password
*/
public function hashSSHA($password) {
$salt = sha1(rand());
$salt = substr($salt, 0, 10);
$encrypted = base64_encode(sha1($password . $salt, true) . $salt);
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
/**
* Decrypting password
* @param salt, password
* returns hash string
*/
public function checkhashSSHA($salt, $password) {
return $hash;
?>
1/14/2016 11:10 PM
11 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
REGISTER.PHP
<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json response array
$response = array("error" => FALSE);
12 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
LOGIN.PHP
<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json response array
$response = array("error" => FALSE);
if ($user != false) {
// use is found
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user is not found with the credentials
$response["error"] = TRUE;
$response["error_msg"] = "Login credentials are wrong. Please try again!"
echo json_encode($response);
}
} else {
// required post params is missing
$response["error"] = TRUE;
$response["error_msg"] = "Required parameters email or password is missing!";
echo json_encode($response);
}
1/14/2016 11:10 PM
13 of 45
{
}
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
"error": false,
"uid": "55fa7220a2c187.50984590",
"user": {
"name": "Ravi Tamada",
"email": "ravi@androidhive.info",
"created_at": "2015-09-17 13:26:16",
"updated_at": null
}
"error": 1,
"error_msg": "Unknown error occurred in registration!"
1/14/2016 11:10 PM
14 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
"error": 2,
"error_msg": "User already existed with ravi8x@androidhive.info"
"error": false,
"uid": "55fa7220a2c187.50984590",
"user": {
"name": "Ravi Tamada",
"email": "ravi@androidhive.info",
"created_at": "2015-09-17 13:26:16",
"updated_at": null
}
"tag": "login",
"success": 0,
"error": 1,
"error_msg": "Login credentials are incorrect. Please try again!"
1/14/2016 11:10 PM
15 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
BUILD.GRADLE
dependencies {
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
}
STRINGS.XML
</resources>
1/14/2016 11:10 PM
16 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
name="bg_login">#26ae90</color>
name="bg_register">#2e3237</color>
name="bg_main">#428bca</color>
name="white">#ffffff</color>
name="input_login">#222222</color>
name="input_login_hint">#999999</color>
name="input_register">#888888</color>
name="input_register_bg">#3b4148</color>
name="input_register_hint">#5e6266</color>
name="btn_login">#26ae90</color>
name="btn_login_bg">#eceef1</color>
name="lbl_name">#333333</color>
name="btn_logut_bg">#ff6861</color>
</resources>
APPCONFIG.JAVA
package info.androidhive.loginandregistration.app;
APPCONTROLLER.JAVA
package info.androidhive.loginandregistration.app;
1/14/2016 11:10 PM
17 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
return mRequestQueue;
1/14/2016 11:10 PM
18 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
ANDROIDMANIFEST.XML
<application
android:name="info.androidhive.loginandregistration.app.AppController"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".RegisterActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" />
</application>
</manifest>
1/14/2016 11:10 PM
19 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
SESSIONMANAGER.JAVA
package info.androidhive.loginandregistration.helper;
import
import
import
import
android.content.Context;
android.content.SharedPreferences;
android.content.SharedPreferences.Editor;
android.util.Log;
editor.putBoolean(KEY_IS_LOGGEDIN, isLoggedIn);
// commit changes
editor.commit();
1/14/2016 11:10 PM
20 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
SQLITEHANDLER.JAVA
/**
* Author: Ravi Tamada
* URL: www.androidhive.info
* twitter: http://twitter.com/ravitamada
* */
package info.androidhive.loginandregistration.helper;
import
import
import
import
import
import
android.content.ContentValues;
android.content.Context;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.database.sqlite.SQLiteOpenHelper;
android.util.Log;
import java.util.HashMap;
// Database Name
private static final String DATABASE_NAME = "android_api";
// Login table name
private static final String TABLE_USER = "user";
// Login Table
private static
private static
private static
private static
private static
Columns names
final String KEY_ID = "id";
final String KEY_NAME = "name";
final String KEY_EMAIL = "email";
final String KEY_UID = "uid";
final String KEY_CREATED_AT = "created_at";
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_USER + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_EMAIL + " TEXT UNIQUE," + KEY_UID + " TEXT,"
+ KEY_CREATED_AT + " TEXT" + ")";
db.execSQL(CREATE_LOGIN_TABLE);
Log.d(TAG, "Database tables created");
1/14/2016 11:10 PM
21 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
}
/**
* Storing user details in database
* */
public void addUser(String name, String email, String uid, String created_at) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, name); // Name
values.put(KEY_EMAIL, email); // Email
values.put(KEY_UID, uid); // Email
values.put(KEY_CREATED_AT, created_at); // Created At
// Inserting Row
long id = db.insert(TABLE_USER, null, values);
db.close(); // Closing database connection
}
/**
* Getting user data from database
* */
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_USER;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
user.put("name", cursor.getString(1));
user.put("email", cursor.getString(2));
user.put("uid", cursor.getString(3));
user.put("created_at", cursor.getString(4));
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Fetching user from Sqlite: " + user.toString());
return user;
/**
1/14/2016 11:10 PM
22 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
SQLiteDatabase db = this.getWritableDatabase();
// Delete All Rows
db.delete(TABLE_USER, null, null);
db.close();
ACTIVITY_LOGIN.XML
<EditText
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_email"
android:inputType="textEmailAddress"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/input_login"
1/14/2016 11:10 PM
23 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_password"
android:inputType="textPassword"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/input_login"
android:textColorHint="@color/input_login_hint" />
<Button
android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:background="@color/btn_login_bg"
android:text="@string/btn_login"
android:textColor="@color/btn_login" />
<!-- Link to Login Screen -->
<Button
android:id="@+id/btnLinkToRegisterScreen"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:background="@null"
android:text="@string/btn_link_to_register"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
LOGINACTIVITY.JAVA
/**
* Author: Ravi Tamada
* URL: www.androidhive.info
* twitter: http://twitter.com/ravitamada
1/14/2016 11:10 PM
24 of 45
import
import
import
import
import
import
import
import
import
import
import
import
import
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
android.app.Activity;
android.app.ProgressDialog;
android.content.Intent;
android.os.Bundle;
android.util.Log;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.Toast;
com.android.volley.Request.Method;
com.android.volley.Response;
com.android.volley.VolleyError;
com.android.volley.toolbox.StringRequest;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import
import
import
import
import
info.androidhive.loginandregistration.R;
info.androidhive.loginandregistration.app.AppConfig;
info.androidhive.loginandregistration.app.AppController;
info.androidhive.loginandregistration.helper.SQLiteHandler;
info.androidhive.loginandregistration.helper.SessionManager;
1/14/2016 11:10 PM
25 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
});
});
/**
* function to verify login details in mysql db
* */
private void checkLogin(final String email, final String password) {
// Tag used to cancel the request
String tag_string_req = "req_login";
pDialog.setMessage("Logging in ...");
showDialog();
26 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
}
}, new Response.ErrorListener() {
}) {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
1/14/2016 11:10 PM
27 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
};
}
return params;
1/14/2016 11:10 PM
28 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
ACTIVITY_REGISTER.XML
29 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
android:padding="10dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp" >
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/input_register_bg"
android:hint="@string/hint_name"
android:padding="10dp"
android:singleLine="true"
android:inputType="textCapWords"
android:textColor="@color/input_register"
android:textColorHint="@color/input_register_hint" />
<EditText
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/input_register_bg"
android:hint="@string/hint_email"
android:inputType="textEmailAddress"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/input_register"
android:textColorHint="@color/input_register_hint" />
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/input_register_bg"
android:hint="@string/hint_password"
android:inputType="textPassword"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/input_register"
android:textColorHint="@color/input_register_hint" />
<!-- Login Button -->
<Button
android:id="@+id/btnRegister"
android:layout_width="fill_parent"
1/14/2016 11:10 PM
30 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
android:text="@string/btn_register"
android:textColor="@color/white" />
<Button
android:id="@+id/btnLinkToLoginScreen"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:background="@null"
android:text="@string/btn_link_to_login"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
REGISTERACTIVITY.JAVA
/**
* Author: Ravi Tamada
* URL: www.androidhive.info
* twitter: http://twitter.com/ravitamada
*/
package info.androidhive.loginandregistration.activity;
import
import
import
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.app.ProgressDialog;
android.content.Intent;
android.os.Bundle;
android.util.Log;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.Toast;
com.android.volley.Request.Method;
com.android.volley.Response;
com.android.volley.VolleyError;
com.android.volley.toolbox.StringRequest;
1/14/2016 11:10 PM
31 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
import java.util.HashMap;
import java.util.Map;
import
import
import
import
import
info.androidhive.loginandregistration.R;
info.androidhive.loginandregistration.app.AppConfig;
info.androidhive.loginandregistration.app.AppController;
info.androidhive.loginandregistration.helper.SQLiteHandler;
info.androidhive.loginandregistration.helper.SessionManager;
// Session manager
session = new SessionManager(getApplicationContext());
// SQLite database handler
db = new SQLiteHandler(getApplicationContext());
1/14/2016 11:10 PM
32 of 45
});
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
});
/**
* Function to store user in MySQL database will post params(tag, name,
* email, password) to register url
* */
private void registerUser(final String name, final String email,
final String password) {
// Tag used to cancel the request
String tag_string_req = "req_register";
pDialog.setMessage("Registering ...");
showDialog();
33 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
}) {
};
}
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
@Override
protected Map<String, String> getParams() {
// Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("email", email);
params.put("password", password);
}
return params;
34 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
35 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
36 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
<RelativeLayout 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"
tools:context="${relativePackage}.${activityClass}" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome"
android:textSize="20dp" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textColor="@color/lbl_name"
android:textSize="24dp" />
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp" />
<Button
android:id="@+id/btnLogout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:background="@color/btn_logut_bg"
android:text="@string/btn_logout"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
</LinearLayout>
</RelativeLayout>
1/14/2016 11:10 PM
37 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
MAINACTIVITY.JAVA
package info.androidhive.loginandregistration;
import info.androidhive.loginandregistration.helper.SQLiteHandler;
import info.androidhive.loginandregistration.helper.SessionManager;
import java.util.HashMap;
import
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.TextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// session manager
session = new SessionManager(getApplicationContext());
if (!session.isLoggedIn()) {
logoutUser();
}
38 of 45
});
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
@Override
public void onClick(View v) {
logoutUser();
}
/**
* Logging out the user. Will set isLoggedIn flag to false in shared
* preferences Clears the user data from sqlite users table
* */
private void logoutUser() {
session.setLogin(false);
db.deleteUsers();
1/14/2016 11:10 PM
39 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
40 of 45
1.1k
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
Tweet
Like
1/14/2016 11:10 PM
41 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
Advertise Here
1/14/2016 11:10 PM
42 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
AndroidHive
34,171 likes
1/14/2016 11:10 PM
43 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
44 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM
45 of 45
http://www.androidhive.info/2012/01/android-login-and-registration-wit...
1/14/2016 11:10 PM