Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AppCompatActivity;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.FirebaseApp;
- import com.google.firebase.FirebaseException;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.auth.PhoneAuthCredential;
- import com.google.firebase.auth.PhoneAuthProvider;
- 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.HashMap;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- public class LoginActivity extends AppCompatActivity {
- private EditText mPhoneNumber, mCode;
- private Button mSend;
- private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
- String mVerificationId;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- FirebaseApp.initializeApp(this);
- userIsLoggedIn();
- mPhoneNumber = findViewById(R.id.phoneNumber);
- mCode = findViewById(R.id.code);
- mSend = findViewById(R.id.verify);
- mSend.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if(mVerificationId != null)
- verifyPhoneNumberWithCode();
- else
- startPhoneNumberVerification();
- }
- });
- mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
- @Override
- public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
- signInWithPhoneAuthCredential(phoneAuthCredential);
- }
- @Override
- public void onVerificationFailed(FirebaseException e) {
- }
- @Override
- public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
- super.onCodeSent(verificationId, forceResendingToken);
- mVerificationId = verificationId;
- mSend.setText("Verify Code");
- }
- };
- }
- private void verifyPhoneNumberWithCode(){
- PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, mCode.getText().toString());
- signInWithPhoneAuthCredential(credential);
- }
- private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
- FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if(task.isSuccessful()){
- final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
- if(user != null){
- final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("user").child(user.getUid());
- mUserDB.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if(!dataSnapshot.exists()){
- Map<String,Object> userMap = new HashMap<>();
- userMap.put("phone",user.getPhoneNumber());
- userMap.put("name",user.getPhoneNumber());
- mUserDB.updateChildren(userMap);
- }
- userIsLoggedIn();
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- //userIsLoggedIn();
- }
- }
- }
- });
- }
- private void userIsLoggedIn() {
- FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
- if(user != null){
- startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
- finish();
- return;
- }
- }
- private void startPhoneNumberVerification() {
- PhoneAuthProvider.getInstance().verifyPhoneNumber(
- mPhoneNumber.getText().toString(),
- 60,
- TimeUnit.SECONDS,
- this,
- mCallbacks);
- }
- }
- import androidx.appcompat.app.AppCompatActivity;
- import android.Manifest;
- import android.content.Intent;
- import android.os.Build;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import com.google.firebase.auth.FirebaseAuth;
- public class MainPageActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main_page);
- Button mLogout = findViewById(R.id.logout);
- Button mFindUser = findViewById(R.id.findUser);
- mFindUser.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- startActivity(new Intent(getApplicationContext(),FindUserActivity.class));
- }
- });
- mLogout.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- FirebaseAuth.getInstance().signOut();
- Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- finish();
- return;
- }
- });
- getPermissions();
- }
- private void getPermissions() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS,Manifest.permission.READ_CONTACTS},1);
- }
- }
- }
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import android.database.Cursor;
- import android.os.Bundle;
- import android.provider.ContactsContract;
- import android.telephony.TelephonyManager;
- import android.widget.LinearLayout;
- 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.Query;
- import com.google.firebase.database.ValueEventListener;
- import java.util.ArrayList;
- public class FindUserActivity extends AppCompatActivity {
- private RecyclerView mUserList;
- private RecyclerView.Adapter mUserListAdapter;
- private RecyclerView.LayoutManager mUserListLayoutManager;
- ArrayList<UserObject> userList,contactList;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_find_user);
- contactList= new ArrayList<>();
- userList= new ArrayList<>();
- initializeRecyclerView();
- getContactsList();
- }
- private void getContactsList(){
- String ISOPrefix = getCountryISO();
- Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
- while(phones.moveToNext()){
- String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
- String phone = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
- phone = phone.replace("","");
- phone = phone.replace("-","");
- phone = phone.replace("(","");
- phone = phone.replace(")","");
- if(!String.valueOf(phone.charAt(0)).equals("+"))
- phone = ISOPrefix + phone;
- UserObject mContact = new UserObject(name,phone);
- contactList.add(mContact);
- getUserDeatails(mContact);
- }
- }
- private void getUserDeatails(UserObject mContact) {
- DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("user");
- Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
- query.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if(dataSnapshot.exists()){
- String phone = "";
- String name = "";
- for(DataSnapshot childSnapshot : dataSnapshot.getChildren()){
- if(childSnapshot.child("phone").getValue()!= null)
- phone = childSnapshot.child("phone").getValue().toString();
- if(childSnapshot.child("name").getValue()!= null)
- phone = childSnapshot.child("name").getValue().toString();
- UserObject mUser = new UserObject(name,phone);
- userList.add(mUser);
- mUserListAdapter.notifyDataSetChanged();
- return;
- }
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- private String getCountryISO(){
- String iso =null;
- TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
- if(telephonyManager.getNetworkCountryIso() != null)
- if(telephonyManager.getNetworkCountryIso().toString().equals(""))
- iso=telephonyManager.getNetworkCountryIso().toString();
- return CountryToPhonePrefix.getPhone(iso);
- }
- private void initializeRecyclerView(){
- mUserList= findViewById(R.id.userList);
- mUserList.setNestedScrollingEnabled(false);
- mUserList.setHasFixedSize(false);
- mUserListLayoutManager = new LinearLayoutManager(getApplicationContext(), RecyclerView.VERTICAL,false);
- mUserList.setLayoutManager(mUserListLayoutManager);
- mUserListAdapter = new UserListAdapter(userList);
- mUserList.setAdapter(mUserListAdapter);
- }
- }
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- import androidx.annotation.NonNull;
- import androidx.recyclerview.widget.RecyclerView;
- import java.util.ArrayList;
- public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.UserListViewHolder> {
- ArrayList<UserObject> userList;
- public UserListAdapter(ArrayList<UserObject> userList){
- this.userList=userList;
- }
- @NonNull
- @Override
- public UserListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user,null,false);
- RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
- layoutView.setLayoutParams(lp);
- UserListViewHolder rcv = new UserListViewHolder(layoutView);
- return rcv;
- }
- @Override
- public void onBindViewHolder(@NonNull UserListViewHolder holder, int position) {
- holder.mName.setText(userList.get(position).getName());
- holder.mPhone.setText(userList.get(position).getPhone());
- }
- @Override
- public int getItemCount() {
- return userList.size();
- }
- public class UserListViewHolder extends RecyclerView.ViewHolder{
- public TextView mName,mPhone;
- public UserListViewHolder(View view){
- super(view);
- mName = view.findViewById(R.id.name);
- mPhone = view.findViewById(R.id.phone);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement