Firebase(7)
Firebase သင္တန္းမွ
=========
Email, Password Project Template
============
Email, Password နဲ႔ Create account, Sign in, Sign out, Reset password ေတြ လုပ္ႏိုင္တဲ့ Project template ပံုစံ ကို တင္ေပးလိုက္ပါတယ္။ ခ်ဲ႕ထြင္ အသံုးျပဳပါ။ (Email verification ထည့္မထားပါဘူး)။ Firebase Auth setup လုပ္ထားၿပီး google-services.json file ထည့္ထားရပါမယ္။
MainActivity နဲ႔ SignedInActivity ၂ခု ထည့္ထားပါတယ္။
========
MainActivity.java
========
package nnl.aide.lessons;
import android.app.*;
import android.os.*;
import com.google.firebase.auth.*;
import android.content.*;
import android.widget.*;
import android.view.*;
import com.google.android.gms.tasks.*;
public class MainActivity extends Activity
{
private TextView userText;
private TextView statusText;
private EditText emailText;
private EditText passwordText;
private FirebaseAuth fbAuth;
private FirebaseAuth.AuthStateListener authListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
userText = (TextView) findViewById(R.id.userText);
statusText = (TextView) findViewById(R.id.statusText);
emailText = (EditText) findViewById(R.id.emailText);
passwordText = (EditText) findViewById(R.id.passwordText);
userText.setText("");
statusText.setText("Signed Out");
fbAuth = FirebaseAuth.getInstance();
authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
userText.setText(user.getEmail());
statusText.setText("Signed In");
//startActivity(new Intent(MainActivity.this,SignedInActivity.class));
} else {
userText.setText("");
statusText.setText("Signed Out");
}
}
};
}
@Override
public void onStart() {
super.onStart();
fbAuth.addAuthStateListener(authListener);
}
@Override
public void onStop() {
super.onStop();
if (authListener != null) {
fbAuth.removeAuthStateListener(authListener);
}
}
public void createAccount(View view) {
String email = emailText.getText().toString();
String password = passwordText.getText().toString();
if (email.length() == 0) {
emailText.setError("Enter an email address");
return;
}
if (password.length() < 6) {
passwordText.setError("Password must be at least 6 characters");
return;
}
fbAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete( Task<AuthResult> task) {
if (!task.isSuccessful()) {
notifyUser("Account creation failed");
}
}
});
}
public void signIn(View view) {
String email = emailText.getText().toString();
String password = passwordText.getText().toString();
if (email.length() == 0) {
emailText.setError("Enter an email address");
return;
}
if (password.length() < 6) {
passwordText.setError("Password must be at least 6 characters");
return;
}
fbAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(
Task<AuthResult> task) {
if (!task.isSuccessful()) {
notifyUser("Authentication failed");
}else{
startActivity(new Intent(MainActivity.this,SignedInActivity.class));
}
}
});
}
public void signOut(View view) {
fbAuth.signOut();
}
public void resetPassword(View view) {
String email = emailText.getText().toString();
if (email.length() == 0) {
emailText.setError("Enter an email address");
return;
}
fbAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete( Task<Void> task) {
if (task.isSuccessful()) {
notifyUser("Reset email sent");
}
}
});
}
private void notifyUser(String message) {
Toast.makeText(MainActivity.this, message,
Toast.LENGTH_SHORT).show();
}
}
========
main.xml
========
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/userText"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Text"
android:id="@+id/statusText"/>
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:ems="10"
android:id="@+id/emailText"/>
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:ems="10"
android:id="@+id/passwordText"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Create Account"
android:onClick="createAccount"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Sign In"
android:onClick="signIn"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Sign Out"
android:onClick="signOut"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Reset Password"
android:onClick="resetPassword"/>
</LinearLayout>
========
SignedInActivity.java
========
package nnl.aide.lessons;
import android.app.*;
import android.os.*;
import com.google.firebase.auth.*;
import android.view.*;
import android.content.*;
public class SignedInActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO: Implement this method
super.onCreate(savedInstanceState);
setContentView(R.layout.signedin_layout);
}
public void signOut(View view) {
FirebaseAuth.getInstance().signOut();
startActivity(new Intent(SignedInActivity.this,MainActivity.class));
}
}
========
signedin_layout.xml
========
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="You are signed in. Welcome!"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Sign Out"
android:onClick="signOut"/>
</LinearLayout>
========
AndroidManifest.xml
========
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nnl.aide.lessons" >
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:resizeableActivity = "true">
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SignedInActivity"/>
</application>
</manifest>
========
app/build.gradle
========
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "nnl.aide.lessons"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.google.firebase:firebase-auth:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
========
:)
Comments
Post a Comment