Activity_mai.
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Username"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextUsername"
android:hint="Username"
android:text=""
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextPassword"
android:text=""
android:hint="Password"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/buttonLogin"
android:text="Login"/>
<[Link]
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="1"
android:progressDrawable="@android:drawable/alert_dark_frame" />
<TextView
android:id="@+id/registro"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Registrarse" />
</LinearLayout>
Activity_Register
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Register">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="REGISTRO DE USUARIO"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Username"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextUsernamer"
android:hint="Username"
android:text=""
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextPasswordr"
android:text=""
android:hint="Password"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password Otra Vez"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextPassword2r"
android:text=""
android:hint="Password"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/buttonRegister"
android:text="Login"/>
</LinearLayout>
Activity Navigation Drawer
<?xml version="1.0" encoding="utf-8"?>
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".NavigationDrawerActivity">
</[Link]>
CLASE MainActivity (Activity)
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
EditText editTextUsername, editTextPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
editTextUsername = (EditText) findViewById([Link]);
editTextPassword = (EditText) findViewById([Link]);
//if user presses on login
//calling the method userLogin
findViewById([Link]).setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
userLogin();
}
});
findViewById([Link]).setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), [Link]));
}
});
/*if user presses on not registered
findViewById([Link]).setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
//open register screen
finish();
startActivity(new Intent(getApplicationContext(), [Link]));
}
});
findViewById([Link]).setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
finish();
startActivity(new Intent(getApplicationContext(), [Link]));
}
});
*/
}
private void userLogin() {
Log.d("newwwss", "Login Function Called");
//First getting the values
final String username = [Link]().toString();
final String password = [Link]().toString();
//Validating inputs
if ([Link](username)) {
[Link]("Please enter your username");
[Link]();
return;
}
if ([Link](password)) {
[Link]("Please enter your password");
[Link]();
return;
}
//If everything is fine
class UserLogin extends AsyncTask<Void, Void, String> {
ProgressBar progressBar;
@Override
protected void onPreExecute() {
Log.d("Mensaje 1: ", "Login Function Called PreExecute");
[Link]();
progressBar = (ProgressBar) findViewById([Link]);
[Link]([Link]);
}
@Override
protected void onPostExecute(String s) {
[Link](s);
[Link]([Link]);
try {
//[Link](getApplicationContext(),[Link](), Toast.LENGTH_SHORT).show();
Log.d("Notificando onPost", s);
//converting response to json object
JSONObject obj = new JSONObject(s);
Log.d("JsonObject", [Link](obj));
//if no error in response
if () {
Log.d("Error Display","Inside Loop");
[Link](getApplicationContext(), [Link]("message"), Toast.LENGTH_SHORT).show();
//Getting the user from the response
//JSONObject userJson = [Link]("user");
//Creating a new user object
/*User user = new User(
[Link]("id"),
[Link]("username"),
[Link]("email"),
[Link]("phone")
);*/
User user = new User(
[Link]("id"),
[Link]("username"),
[Link]("email"),
[Link]("phone")
);
//Storing the user in shared preferences
[Link](getApplicationContext()).userLogin(user);
//Starting the profile activity
//finish();
startActivity(new Intent(getApplicationContext(), [Link]));
} else {
[Link](getApplicationContext(), "Datos de Usuario Incorrecto",
Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
[Link]();
}
}
@Override
protected String doInBackground(Void... voids) {
//Creating request handler object
Log.d("newwwss", "INBackGround");
WebServiceURL URLs = new WebServiceURL();
RequestHandler requestHandler = new RequestHandler();
//Creating request parameters
HashMap<String, String> params = new HashMap<>();
[Link]("username", username);
[Link]("password", password);
//returning the Response of user login
Log.d("URL",URLs.URL_LOGIN);
Log.d("username",username);
Log.d("password",password);
Log.d("Return",[Link](URLs.URL_LOGIN, params).toString());
return [Link](URLs.URL_LOGIN, params);
}
}
UserLogin ul = new UserLogin();
[Link]();
}
}
CLASE WebServiceURL
package [Link];
public class WebServiceURL {
private static final String ROOT_URL ="[Link]
public static final String URL_REGISTER = ROOT_URL + "register";
public static final String URL_LOGIN = ROOT_URL + "login";
public static final String URL_PRODUCT = ROOT_URL + "product";
public static final String URL_UPDATEUSER = ROOT_URL + "update";
public static final String URL_FORGOTPASSWORD = ROOT_URL + "forgotPassword";
public static final String URL_RESETPASSWORD = ROOT_URL + "resetPassword";
public static final String URL_ORDERCONFIRM = ROOT_URL + "orderConfirm";
}
CLASE User
package [Link];
public class User {
private String username, email, phone;
private int id;
public User(int id, String username, String email, String phone) {
[Link] = id;
[Link] = username;
[Link] = email;
[Link] = phone;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
public String getPhone() {
return phone;
}
public int getId() {
return id;
}
}
CLASE SharedPrefManager
package [Link];
import [Link];
import [Link];
import [Link];
public class SharedPrefManager {
//the constants
private static final String SHARED_PREF_NAME = "exampleapp";
private static final String KEY_USERNAME = "keyusername";
private static final String KEY_EMAIL = "keyemail";
private static final String KEY_PHONE = "keyphone";
private static final String KEY_ID = "keyid";
private static SharedPrefManager mInstance;
private static Context mCtx;
private SharedPrefManager(Context context) {
mCtx = context;
}
public static synchronized SharedPrefManager getInstance(Context context) {
if (mInstance == null) {
mInstance = new SharedPrefManager(context);
}
return mInstance;
}
//method to let the user login
//this method will store the user data in shared preferences
public void userLogin(User user) {
SharedPreferences sharedPreferences = [Link](SHARED_PREF_NAME,
Context.MODE_PRIVATE);
[Link] editor = [Link]();
[Link](KEY_ID, [Link]());
[Link](KEY_USERNAME, [Link]());
[Link](KEY_EMAIL, [Link]());
[Link](KEY_PHONE, [Link]());
[Link]();
}
//this method will check whether the user is already logged in or not
public boolean isLoggedIn() {
SharedPreferences sharedPreferences = [Link](SHARED_PREF_NAME,
Context.MODE_PRIVATE);
return [Link](KEY_USERNAME, null) != null;
}
//this method will give the logged in user
public User getUser() {
SharedPreferences sharedPreferences = [Link](SHARED_PREF_NAME,
Context.MODE_PRIVATE);
return new User(
[Link](KEY_ID, -1),
[Link](KEY_USERNAME, null),
[Link](KEY_EMAIL, null),
[Link](KEY_PHONE, null)
);
}
//this method will logout the user
public void logout() {
SharedPreferences sharedPreferences = [Link](SHARED_PREF_NAME,
Context.MODE_PRIVATE);
[Link] editor = [Link]();
[Link]();
[Link]();
[Link](new Intent(mCtx, [Link]));
}
}
CLASE RequestHandler
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class RequestHandler {
public String sendPostRequest(String requestURL, HashMap<String, String> postDataParams) {
URL url;
StringBuilder sb = new StringBuilder();
try {
url = new URL(requestURL);
HttpURLConnection conn = (HttpURLConnection) [Link]();
[Link](15000);
[Link](15000);
[Link]("POST");
[Link](true);
[Link](true);
OutputStream os = [Link]();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
[Link](getPostDataString(postDataParams));
[Link]();
[Link]();
[Link]();
int responseCode = [Link]();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader([Link]()));
sb = new StringBuilder();
String response;
while ((response = [Link]()) != null) {
[Link](response);
}
}
} catch (Exception e) {
[Link]();
}
return [Link]();
}
//The following method will convert a key-value data pair into a query string as needed to send to the server.
private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for ([Link]<String, String> entry : [Link]()) {
if (first)
first = false;
else
[Link]("&");
[Link]([Link]([Link](), "UTF-8"));
[Link]("=");
[Link]([Link]([Link](), "UTF-8"));
}
return [Link]();
}
}
CLASE Register (ACtivity)
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class Register extends AppCompatActivity {
EditText editTextUsername, editTextPassword,editTextPassword2;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_register);
editTextUsername = (EditText) findViewById([Link]);
editTextPassword = (EditText) findViewById([Link]);
editTextPassword2 = (EditText) findViewById([Link].editTextPassword2r);
findViewById([Link]).setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
userRegister();
}
});
}
private void userRegister() {
Log.d("newwwss", "Login Function Called");
//First getting the values
final String username = [Link]().toString();
final String password = [Link]().toString();
final String password2 = [Link]().toString();
//Validating inputs
if ([Link](username)) {
[Link]("Please enter your username");
[Link]();
return;
}
if ([Link](password)) {
[Link]("Please enter your password");
[Link]();
return;
}
if ([Link](password2)) {
[Link]("Please enter your password");
[Link]();
return;
}
if () {
[Link]("Password no son Iguales, intente otra vez");
[Link]("");
[Link]("");
[Link]();
return;
}
//If everything is fine
class UserRegister extends AsyncTask<Void, Void, String> {
ProgressBar progressBar;
@Override
protected void onPreExecute() {
Log.d("Mensaje 1: ", "Login Function Called PreExecute");
[Link]();
@Override
protected void onPostExecute(String s) {
[Link](s);
try {
//[Link](getApplicationContext(),[Link](), Toast.LENGTH_SHORT).show();
Log.d("Notificando onPost", s);
//converting response to json object
JSONObject obj = new JSONObject(s);
Log.d("JsonObject", [Link](obj));
//if no error in response
if () {
Log.d("Error Display","Inside Loop");
[Link](getApplicationContext(), [Link]("message"), Toast.LENGTH_SHORT).show();
//Getting the user from the response
//JSONObject userJson = [Link]("user");
//Creating a new user object
/*User user = new User(
[Link]("id"),
[Link]("username"),
[Link]("email"),
[Link]("phone")
);
User user = new User(
[Link]("id"),
[Link]("username"),
[Link]("email"),
[Link]("phone")
);
*/
//Storing the user in shared preferences
//Starting the profile activity
//finish();
startActivity(new Intent(getApplicationContext(), [Link]));
} else {
[Link](getApplicationContext(), "Datos de Usuario Incorrecto",
Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
[Link]();
}
}
@Override
protected String doInBackground(Void... voids) {
//Creating request handler object
Log.d("newwwss", "INBackGround");
WebServiceURL URLs = new WebServiceURL();
RequestHandler requestHandler = new RequestHandler();
//Creating request parameters
HashMap<String, String> params = new HashMap<>();
[Link]("username", username);
[Link]("password", password);
//returning the Response of user login
Log.d("URL",URLs.URL_REGISTER);
Log.d("username",username);
Log.d("password",password);
//Log.d("Return",[Link](URLs.URL_REGISTER, params).toString());
return [Link](URLs.URL_REGISTER, params);
}
}
UserRegister ul = new UserRegister();
[Link]();
}
}
CLASE NavigationDrawerActivity
package [Link];
import [Link];
import [Link];
public class NavigationDrawerActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_navigation_drawer);
}
}
WEBSERVICE
[Link]
<?php
require_once '[Link]';
$response = array();
if(isset($_GET['apicall'])){
switch($_GET['apicall']){
case 'login':
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $con->prepare("SELECT id, username, email, phone FROM
users WHERE username = ? AND password = ?");
$stmt->bind_param("ss",$username, $password);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
$stmt->bind_result($id, $username, $email, $phone);
$stmt->fetch();
$user = array(
'error'=>false,
'message'=>'Login Correcto de Usuario',
'id'=>$id,
'username'=>$username,
'email'=>$email,
'phone'=>$phone
);
//array_push($data, $user);
echo json_encode($user);
//$response['error'] = false;
//$response['message'] = 'Login successful';
//$response['user'] = $user;
//print_r ($user);
}else{
//$response['error'] = false;
//$response['message'] = 'Invalid username or password';
$user = array(
'error'=>true,
'message'=>'Login Incorrecto',
'id'=>'',
'username'=>'',
'email'=>'',
'phone'=>''
);
echo json_encode($user);
}
break;
case 'signup':
break;
case 'register':
$username = $_POST['username'];
$password = $_POST['password'];
//$username = $_GET['username'];
// $password = $_GET['password'];
$stmt = $con->prepare("SELECT id, username, email, phone FROM
users WHERE username = ? AND password = ?");
$stmt->bind_param("ss",$username, $password);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows <=0){
//$stmt->bind_result( $username);
//$stmt2 = $con->prepare("insert into users (username,
password) values ( ? , ?");
$q= "insert into users (username, password) values
( '$username' , '$password')";
//echo $q;
$stmt2 = $con->prepare($q);
//$stmt2->bind_param("ss",$username, $password);
$stmt2->execute();
$stmt2->store_result();
$stmt2->fetch();
$user = array(
'error'=>false,
'message'=>'Registro de Usuario Correcto',
'username'=>$username
);
//array_push($data, $user);
echo json_encode($user);
//$response['error'] = false;
//$response['message'] = 'Login successful';
//$response['user'] = $user;
//print_r ($user);
}else{
//$response['error'] = false;
//$response['message'] = 'Invalid username or password';
$user = array(
'error'=>true,
'message'=>'Registro Incorrecto.. Usuario Existe',
'id'=>'',
'username'=>'',
'email'=>'',
'phone'=>''
);
echo json_encode($user);
}
break;
break;
default:
$response['error'] = true;
$response['message'] = 'Invalid Operation Called';
}
}
else{
$response['error'] = true;
$response['message'] = 'Invalid API Call';
}
?>
[Link]
<?php
$host = 'localhost';
$user = 'utp';
$pass = '12345';
$db = 'androidtest';
// Create connection
$con = mysqli_connect($host, $user, $pass, $db);
// Check connection
if (!$con) { die("Connection failed: " . mysqli_connect_error()); }
// Else{ echo "Connected"; }
?>