Created
April 14, 2017 22:57
-
-
Save mitchtabian/ba4523b07c532d485c6aaab5e58e8e47 to your computer and use it in GitHub Desktop.
Firebase-Save-User-Information
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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:gravity="center_horizontal" | |
android:orientation="vertical" | |
tools:context="com.tabian.firebasesaveuserdata.MainActivity"> | |
<ScrollView | |
android:id="@+id/login_form" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<LinearLayout | |
android:id="@+id/email_login_form" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:orientation="vertical"> | |
<EditText | |
android:id="@+id/email" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:hint="Enter Email" | |
android:inputType="textEmailAddress" | |
android:maxLines="1"/> | |
<EditText | |
android:id="@+id/password" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:hint="Password" | |
android:imeActionId="@+id/login" | |
android:imeOptions="actionUnspecified" | |
android:inputType="textPassword" | |
android:maxLines="1" | |
/> | |
<Button | |
android:id="@+id/email_sign_in_button" | |
style="?android:textAppearanceSmall" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="16dp" | |
android:text="Sign In" | |
android:textStyle="bold"/> | |
<Button | |
android:id="@+id/email_sign_out_button" | |
style="?android:textAppearanceSmall" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="16dp" | |
android:text="Sign out" | |
android:textStyle="bold"/> | |
<Button | |
android:id="@+id/view_items_screen" | |
style="?android:textAppearanceSmall" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="16dp" | |
android:text="View Database Contents" | |
android:textStyle="bold"/> | |
<Button | |
android:id="@+id/user_information" | |
style="?android:textAppearanceSmall" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="16dp" | |
android:text="User Information" | |
android:textStyle="bold"/> | |
</LinearLayout> | |
</ScrollView> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<TextView | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="Register New User" | |
android:textSize="30sp" | |
android:layout_centerHorizontal="true" | |
android:layout_marginTop="10dp" | |
android:id="@+id/textView"/> | |
<TextView | |
android:text="Name: " | |
android:layout_width="wrap_content" | |
android:layout_height="40dp" | |
android:layout_marginStart="74dp" | |
android:layout_marginTop="83dp" | |
android:gravity="bottom" | |
android:id="@+id/textName"/> | |
<TextView | |
android:text="Email: " | |
android:layout_width="wrap_content" | |
android:layout_height="40dp" | |
android:layout_below="@+id/textName" | |
android:layout_alignEnd="@+id/textName" | |
android:gravity="bottom" | |
android:id="@+id/textEmail"/> | |
<EditText | |
android:id="@+id/etEmail" | |
android:layout_width="200dp" | |
android:layout_height="40dp" | |
android:layout_toRightOf="@+id/textEmail" | |
android:gravity="bottom" | |
android:textAlignment="center" | |
android:layout_below="@+id/textName" | |
/> | |
<TextView | |
android:text="Phone #:" | |
android:layout_width="wrap_content" | |
android:layout_height="40dp" | |
android:layout_below="@+id/textEmail" | |
android:layout_alignEnd="@+id/textEmail" | |
android:gravity="bottom" | |
android:id="@+id/textPhone"/> | |
<EditText | |
android:id="@+id/etPhone" | |
android:layout_width="200dp" | |
android:layout_height="40dp" | |
android:layout_toRightOf="@+id/textPhone" | |
android:gravity="bottom" | |
android:textAlignment="center" | |
android:layout_below="@+id/textEmail" | |
/> | |
<EditText | |
android:id="@+id/etName" | |
android:layout_width="200dp" | |
android:layout_height="40dp" | |
android:gravity="bottom" | |
android:textAlignment="center" | |
android:layout_marginTop="83dp" | |
android:layout_toRightOf="@+id/textName"/> | |
<Button | |
android:id="@+id/btnSubmit" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="Submit" | |
android:layout_below="@+id/textPhone" | |
android:layout_marginTop="20dp" | |
android:layout_centerHorizontal="true"/> | |
</RelativeLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tabian.firebasesaveuserdata; | |
import android.os.Bundle; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.util.Log; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.Toast; | |
import com.google.firebase.auth.FirebaseAuth; | |
import com.google.firebase.auth.FirebaseUser; | |
import com.google.firebase.database.DataSnapshot; | |
import com.google.firebase.database.DatabaseError; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.database.ValueEventListener; | |
/** | |
* Created by User on 2/16/2017. | |
*/ | |
public class AddToDatabase extends AppCompatActivity { | |
private static final String TAG = "AddToDatabase"; | |
private Button btnSubmit; | |
private EditText mName,mEmail,mPhoneNum; | |
private String userID; | |
//add Firebase Database stuff | |
private FirebaseDatabase mFirebaseDatabase; | |
private FirebaseAuth mAuth; | |
private FirebaseAuth.AuthStateListener mAuthListener; | |
private DatabaseReference myRef; | |
@Override | |
protected void onCreate(@Nullable Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.add_to_database_layout); | |
btnSubmit = (Button) findViewById(R.id.btnSubmit); | |
mName = (EditText) findViewById(R.id.etName); | |
mEmail = (EditText) findViewById(R.id.etEmail); | |
mPhoneNum = (EditText) findViewById(R.id.etPhone); | |
//declare the database reference object. This is what we use to access the database. | |
//NOTE: Unless you are signed in, this will not be useable. | |
mAuth = FirebaseAuth.getInstance(); | |
mFirebaseDatabase = FirebaseDatabase.getInstance(); | |
myRef = mFirebaseDatabase.getReference(); | |
FirebaseUser user = mAuth.getCurrentUser(); | |
userID = user.getUid(); | |
mAuthListener = new FirebaseAuth.AuthStateListener() { | |
@Override | |
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { | |
FirebaseUser user = firebaseAuth.getCurrentUser(); | |
if (user != null) { | |
// User is signed in | |
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); | |
toastMessage("Successfully signed in with: " + user.getEmail()); | |
} else { | |
// User is signed out | |
Log.d(TAG, "onAuthStateChanged:signed_out"); | |
toastMessage("Successfully signed out."); | |
} | |
// ... | |
} | |
}; | |
// Read from the database | |
myRef.addValueEventListener(new ValueEventListener() { | |
@Override | |
public void onDataChange(DataSnapshot dataSnapshot) { | |
// This method is called once with the initial value and again | |
// whenever data at this location is updated. | |
Log.d(TAG, "onDataChange: Added information to database: \n" + | |
dataSnapshot.getValue()); | |
} | |
@Override | |
public void onCancelled(DatabaseError error) { | |
// Failed to read value | |
Log.w(TAG, "Failed to read value.", error.toException()); | |
} | |
}); | |
btnSubmit.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Log.d(TAG, "onClick: Submit pressed."); | |
String name = mName.getText().toString(); | |
String email = mEmail.getText().toString(); | |
String phoneNum = mPhoneNum.getText().toString(); | |
Log.d(TAG, "onClick: Attempting to submit to database: \n" + | |
"name: " + name + "\n" + | |
"email: " + email + "\n" + | |
"phone number: " + phoneNum + "\n" | |
); | |
//handle the exception if the EditText fields are null | |
if(!name.equals("") && !email.equals("") && !phoneNum.equals("")){ | |
UserInformation userInformation = new UserInformation(email,name,phoneNum); | |
myRef.child("users").child(userID).setValue(userInformation); | |
toastMessage("New Information has been saved."); | |
mName.setText(""); | |
mEmail.setText(""); | |
mPhoneNum.setText(""); | |
}else{ | |
toastMessage("Fill out all the fields"); | |
} | |
} | |
}); | |
} | |
@Override | |
public void onStart() { | |
super.onStart(); | |
mAuth.addAuthStateListener(mAuthListener); | |
} | |
@Override | |
public void onStop() { | |
super.onStop(); | |
if (mAuthListener != null) { | |
mAuth.removeAuthStateListener(mAuthListener); | |
} | |
} | |
/** | |
* customizable toast | |
* @param message | |
*/ | |
private void toastMessage(String message){ | |
Toast.makeText(this,message,Toast.LENGTH_SHORT).show(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.tabian.firebasesaveuserdata"> | |
<uses-permission android:name="android.permission.INTERNET"></uses-permission> | |
<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=".ViewDatabase"></activity> | |
<activity android:name=".AddToDatabase"></activity> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tabian.firebasesaveuserdata; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.support.annotation.NonNull; | |
import android.support.v7.app.AppCompatActivity; | |
import android.util.Log; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.Toast; | |
import com.google.firebase.auth.FirebaseAuth; | |
import com.google.firebase.auth.FirebaseUser; | |
public class MainActivity extends AppCompatActivity { | |
private static final String TAG = "MainActivity"; | |
private FirebaseAuth mAuth; | |
private FirebaseAuth.AuthStateListener mAuthListener; | |
// UI references. | |
private EditText mEmail, mPassword; | |
private Button btnSignIn,btnSignOut, btnViewDatabase,btnAddToDatabase; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
//declare buttons and edit texts in oncreate | |
mEmail = (EditText) findViewById(R.id.email); | |
mPassword = (EditText) findViewById(R.id.password); | |
btnSignIn = (Button) findViewById(R.id.email_sign_in_button); | |
btnSignOut = (Button) findViewById(R.id.email_sign_out_button); | |
btnViewDatabase = (Button) findViewById(R.id.view_items_screen); | |
btnAddToDatabase = (Button) findViewById(R.id.user_information); | |
mAuth = FirebaseAuth.getInstance(); | |
mAuthListener = new FirebaseAuth.AuthStateListener() { | |
@Override | |
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { | |
FirebaseUser user = firebaseAuth.getCurrentUser(); | |
if (user != null) { | |
// User is signed in | |
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); | |
toastMessage("Successfully signed in with: " + user.getEmail()); | |
} else { | |
// User is signed out | |
Log.d(TAG, "onAuthStateChanged:signed_out"); | |
toastMessage("Successfully signed out."); | |
} | |
// ... | |
} | |
}; | |
btnSignIn.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
String email = mEmail.getText().toString(); | |
String pass = mPassword.getText().toString(); | |
if(!email.equals("") && !pass.equals("")){ | |
mAuth.signInWithEmailAndPassword(email,pass); | |
}else{ | |
toastMessage("You didn't fill in all the fields."); | |
} | |
} | |
}); | |
btnSignOut.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
mAuth.signOut(); | |
toastMessage("Signing Out..."); | |
} | |
}); | |
btnViewDatabase.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Intent intent = new Intent(MainActivity.this, ViewDatabase.class); | |
startActivity(intent); | |
} | |
}); | |
btnAddToDatabase.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Intent intent = new Intent(MainActivity.this, AddToDatabase.class); | |
startActivity(intent); | |
} | |
}); | |
} | |
@Override | |
public void onStart() { | |
super.onStart(); | |
mAuth.addAuthStateListener(mAuthListener); | |
} | |
@Override | |
public void onStop() { | |
super.onStop(); | |
if (mAuthListener != null) { | |
mAuth.removeAuthStateListener(mAuthListener); | |
} | |
} | |
/** | |
* customizable toast | |
* @param message | |
*/ | |
private void toastMessage(String message){ | |
Toast.makeText(this,message,Toast.LENGTH_SHORT).show(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tabian.firebasesaveuserdata; | |
/** | |
* Created by User on 2/8/2017. | |
*/ | |
public class UserInformation { | |
private String name; | |
private String email; | |
private String phone_num; | |
public UserInformation(){ | |
} | |
public UserInformation(String email, String name, String phone_num) { | |
this.email = email; | |
this.name = name; | |
this.phone_num = phone_num; | |
} | |
public String getEmail() { | |
return email; | |
} | |
public void setEmail(String email) { | |
this.email = email; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public String getPhone_num() { | |
return phone_num; | |
} | |
public void setPhone_num(String phone_num) { | |
this.phone_num = phone_num; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<TextView | |
android:textAlignment="center" | |
android:textSize="25sp" | |
android:text="User Information" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:id="@+id/tvUserInfo"/> | |
<ListView | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:id="@+id/listview"/> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tabian.firebasesaveuserdata; | |
import android.os.Bundle; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.util.Log; | |
import android.widget.ArrayAdapter; | |
import android.widget.ListView; | |
import android.widget.Toast; | |
import com.google.firebase.auth.FirebaseAuth; | |
import com.google.firebase.auth.FirebaseUser; | |
import com.google.firebase.database.DataSnapshot; | |
import com.google.firebase.database.DatabaseError; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.database.ValueEventListener; | |
import java.util.ArrayList; | |
/** | |
* Created by User on 2/7/2017. | |
*/ | |
public class ViewDatabase extends AppCompatActivity { | |
private static final String TAG = "ViewDatabase"; | |
//add Firebase Database stuff | |
private FirebaseDatabase mFirebaseDatabase; | |
private FirebaseAuth mAuth; | |
private FirebaseAuth.AuthStateListener mAuthListener; | |
private DatabaseReference myRef; | |
String userID; | |
private ListView mListView; | |
@Override | |
protected void onCreate(@Nullable Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.view_database_layout); | |
mListView = (ListView) findViewById(R.id.listview); | |
//declare the database reference object. This is what we use to access the database. | |
//NOTE: Unless you are signed in, this will not be useable. | |
mAuth = FirebaseAuth.getInstance(); | |
mFirebaseDatabase = FirebaseDatabase.getInstance(); | |
myRef = mFirebaseDatabase.getReference(); | |
FirebaseUser user = mAuth.getCurrentUser(); | |
userID = user.getUid(); | |
mAuthListener = new FirebaseAuth.AuthStateListener() { | |
@Override | |
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { | |
FirebaseUser user = firebaseAuth.getCurrentUser(); | |
if (user != null) { | |
// User is signed in | |
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); | |
toastMessage("Successfully signed in with: " + user.getEmail()); | |
} else { | |
// User is signed out | |
Log.d(TAG, "onAuthStateChanged:signed_out"); | |
toastMessage("Successfully signed out."); | |
} | |
// ... | |
} | |
}; | |
// Read from the database | |
myRef.addValueEventListener(new ValueEventListener() { | |
@Override | |
public void onDataChange(DataSnapshot dataSnapshot) { | |
// This method is called once with the initial value and again | |
// whenever data at this location is updated. | |
showData(dataSnapshot); | |
} | |
@Override | |
public void onCancelled(DatabaseError error) { | |
// Failed to read value | |
Log.w(TAG, "Failed to read value.", error.toException()); | |
} | |
}); | |
} | |
private void showData(DataSnapshot dataSnapshot){ | |
for(DataSnapshot ds : dataSnapshot.getChildren()){ | |
UserInformation uInfo = new UserInformation(); | |
uInfo.setName(ds.child(userID).getValue(UserInformation.class).getName()); //set the name | |
uInfo.setEmail(ds.child(userID).getValue(UserInformation.class).getEmail()); //set the email | |
uInfo.setPhone_num(ds.child(userID).getValue(UserInformation.class).getPhone_num()); //set the phone_num | |
//display all the information | |
Log.d(TAG, "showData: name: " + uInfo.getName()); | |
Log.d(TAG, "showData: email: " + uInfo.getEmail()); | |
Log.d(TAG, "showData: phone_num: " + uInfo.getPhone_num()); | |
ArrayList<String> array = new ArrayList<>(); | |
array.add(uInfo.getName()); | |
array.add(uInfo.getEmail()); | |
array.add(uInfo.getPhone_num()); | |
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array); | |
mListView.setAdapter(adapter); | |
} | |
} | |
@Override | |
public void onStart() { | |
super.onStart(); | |
mAuth.addAuthStateListener(mAuthListener); | |
} | |
@Override | |
public void onStop() { | |
super.onStop(); | |
if (mAuthListener != null) { | |
mAuth.removeAuthStateListener(mAuthListener); | |
} | |
} | |
/** | |
* customizable toast | |
* @param message | |
*/ | |
private void toastMessage(String message){ | |
Toast.makeText(this,message,Toast.LENGTH_SHORT).show(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment