Exp4

                Never    
Text
       
package net.simplifiedcoding.firebasephoneauthentication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity{
private EditText editTextMobile;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextMobile=findViewById(R.id.editTextMobile);
findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String mobile =editTextMobile.getText().toString().trim();
if(mobile.isEmpty()||mobile.length()< 10){
editTextMobile.setError("Enter a valid mobile");
editTextMobile.requestFocus();
return;
}
Intent intent= new Intent(MainActivity.this,VerifyPhoneActivity.class);
intent.putExtra("mobile", mobile);
startActivity(intent);
} });
}
}








VerifyPhoneActivity.java
package net.simplifiedcoding.firebasephoneauthentication;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskExecutors;
import com.google.firebase.FirebaseException;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;
import java.util.concurrent.TimeUnit;
public class VerifyPhoneActivity extends AppCompatActivity{
private String mVerificationId;
private EditTexteditTextCode;
private FirebaseAuthmAuth;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verify_phone);
mAuth=FirebaseAuth.getInstance();
editTextCode=findViewById(R.id.editTextCode);
Intent intent=getIntent();
String mobile =intent.getStringExtra("mobile");
sendVerificationCode(mobile);
findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String code =editTextCode.getText().toString().trim();
if (code.isEmpty()||code.length()< 6){
editTextCode.setError("Enter valid code");
editTextCode.requestFocus();
return;
}
verifyVerificationCode(code);
} });
}
private void sendVerificationCode(String mobile){






PhoneAuthProvider.getInstance().verifyPhoneNumber("+91" + mobile,60,TimeUnit.SECONDS,
TaskExecutors.MAIN_THREAD, mCallbacks);
}
private PhoneAuthProvider.OnVerificationStateChangedCallbacksmCallbacks= new
PhoneAuthProvider.OnVerificationStateChangedCallbacks(){


@Override
public void onVerificationCompleted(PhoneAuthCredentialphoneAuthCredential){
String code =phoneAuthCredential.getSmsCode();
if (code != null){ editTextCode.setText(code);
verifyVerificationCode(code);
}
}
@Override
public void onVerificationFailed(FirebaseException e){
Toast.makeText(VerifyPhoneActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
}
@Override
public void onCodeSent(String s,PhoneAuthProvider.ForceResendingTokenforceResendingToken){
super.onCodeSent(s,forceResendingToken);
mVerificationId= s;
}
};
private void verifyVerificationCode(String code){
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId,code);
signInWithPhoneAuthCredential(credential);
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential){
mAuth.signInWithCredential(credential).addOnCompleteListener(VerifyPhoneActivity.this, new
OnCompleteListener<AuthResult>(){
@Override
public void onComplete(@NonNull Task<AuthResult> task){
if (task.isSuccessful()){
//verification successful we will start the profile activity
Intent intent= new Intent(VerifyPhoneActivity.this,ProfileActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
} else {
String message = "Somthing is wrong, we will fix it soon...";
if (task.getException()instanceofFirebaseAuthInvalidCredentialsException){
message = "Invalid code entered...";
}
Snackbarsnackbar=Snackbar.make(findViewById(R.id.parent),message,Snackbar.LENGTH_LONG);
snackbar.setAction("Dismiss", new View.OnClickListener(){



@Override
public void onClick(View v){
}
});
}
});
}
snackbar.show();
}
     }
 
 
 Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editTextMobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter Mobile Number"
        android:inputType="phone"
        android:layout_marginBottom="16dp"/>

    <Button
        android:id="@+id/buttonContinue"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Continue"
        android:layout_below="@id/editTextMobile"/>

</RelativeLayout>

Activity_verify_phone
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".VerifyPhoneActivity">

    <EditText
        android:id="@+id/editTextCode"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter Verification Code"
        android:inputType="number"
        android:layout_marginBottom="16dp"/>

    <Button
        android:id="@+id/buttonSignIn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Sign In"
        android:layout_below="@id/editTextCode"/>

</RelativeLayout>

Raw Text