Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.78 KB | None | 0 0
  1. import android.content.Intent;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.widget.Button;
  5. import android.widget.EditText;
  6.  
  7. import androidx.annotation.NonNull;
  8. import androidx.appcompat.app.AppCompatActivity;
  9.  
  10. import com.google.android.gms.tasks.OnCompleteListener;
  11. import com.google.android.gms.tasks.Task;
  12. import com.google.firebase.FirebaseApp;
  13. import com.google.firebase.FirebaseException;
  14. import com.google.firebase.auth.AuthResult;
  15. import com.google.firebase.auth.FirebaseAuth;
  16. import com.google.firebase.auth.FirebaseUser;
  17. import com.google.firebase.auth.PhoneAuthCredential;
  18. import com.google.firebase.auth.PhoneAuthProvider;
  19. import com.google.firebase.database.DataSnapshot;
  20. import com.google.firebase.database.DatabaseError;
  21. import com.google.firebase.database.DatabaseReference;
  22. import com.google.firebase.database.FirebaseDatabase;
  23. import com.google.firebase.database.ValueEventListener;
  24.  
  25. import java.util.HashMap;
  26. import java.util.Map;
  27. import java.util.concurrent.TimeUnit;
  28.  
  29.  
  30. public class LoginActivity extends AppCompatActivity {
  31.  
  32. private EditText mPhoneNumber, mCode;
  33. private Button mSend;
  34.  
  35. private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
  36.  
  37. String mVerificationId;
  38.  
  39. @Override
  40. protected void onCreate(Bundle savedInstanceState) {
  41. super.onCreate(savedInstanceState);
  42. setContentView(R.layout.activity_main);
  43.  
  44. FirebaseApp.initializeApp(this);
  45.  
  46. userIsLoggedIn();
  47.  
  48. mPhoneNumber = findViewById(R.id.phoneNumber);
  49. mCode = findViewById(R.id.code);
  50.  
  51. mSend = findViewById(R.id.verify);
  52.  
  53. mSend.setOnClickListener(new View.OnClickListener() {
  54. @Override
  55. public void onClick(View v) {
  56. if(mVerificationId != null)
  57. verifyPhoneNumberWithCode();
  58. else
  59. startPhoneNumberVerification();
  60. }
  61. });
  62.  
  63.  
  64. mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
  65. @Override
  66. public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
  67. signInWithPhoneAuthCredential(phoneAuthCredential);
  68. }
  69.  
  70. @Override
  71. public void onVerificationFailed(FirebaseException e) {
  72. }
  73.  
  74.  
  75. @Override
  76. public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
  77. super.onCodeSent(verificationId, forceResendingToken);
  78.  
  79. mVerificationId = verificationId;
  80. mSend.setText("Verify Code");
  81. }
  82. };
  83.  
  84. }
  85.  
  86.  
  87.  
  88. private void verifyPhoneNumberWithCode(){
  89. PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, mCode.getText().toString());
  90. signInWithPhoneAuthCredential(credential);
  91. }
  92.  
  93. private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
  94. FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  95. @Override
  96. public void onComplete(@NonNull Task<AuthResult> task) {
  97. if(task.isSuccessful()){
  98.  
  99. final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  100.  
  101. if(user != null){
  102. final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("user").child(user.getUid());
  103. mUserDB.addListenerForSingleValueEvent(new ValueEventListener() {
  104. @Override
  105. public void onDataChange(DataSnapshot dataSnapshot) {
  106. if(!dataSnapshot.exists()){
  107. Map<String,Object> userMap = new HashMap<>();
  108. userMap.put("phone",user.getPhoneNumber());
  109. userMap.put("name",user.getPhoneNumber());
  110. mUserDB.updateChildren(userMap);
  111.  
  112. }
  113. userIsLoggedIn();
  114. }
  115.  
  116. @Override
  117. public void onCancelled(DatabaseError databaseError) {
  118.  
  119. }
  120. });
  121. //userIsLoggedIn();
  122. }
  123.  
  124. }
  125. }
  126.  
  127.  
  128.  
  129.  
  130. });
  131. }
  132.  
  133. private void userIsLoggedIn() {
  134. FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  135. if(user != null){
  136. startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
  137. finish();
  138. return;
  139. }
  140. }
  141.  
  142. private void startPhoneNumberVerification() {
  143. PhoneAuthProvider.getInstance().verifyPhoneNumber(
  144. mPhoneNumber.getText().toString(),
  145. 60,
  146. TimeUnit.SECONDS,
  147. this,
  148. mCallbacks);
  149. }
  150. }
  151.  
  152. import androidx.appcompat.app.AppCompatActivity;
  153.  
  154. import android.Manifest;
  155. import android.content.Intent;
  156. import android.os.Build;
  157. import android.os.Bundle;
  158. import android.view.View;
  159. import android.widget.Button;
  160. import com.google.firebase.auth.FirebaseAuth;
  161.  
  162. public class MainPageActivity extends AppCompatActivity {
  163.  
  164. @Override
  165. protected void onCreate(Bundle savedInstanceState) {
  166. super.onCreate(savedInstanceState);
  167. setContentView(R.layout.activity_main_page);
  168.  
  169. Button mLogout = findViewById(R.id.logout);
  170. Button mFindUser = findViewById(R.id.findUser);
  171.  
  172. mFindUser.setOnClickListener(new View.OnClickListener(){
  173. @Override
  174. public void onClick(View v){
  175. startActivity(new Intent(getApplicationContext(),FindUserActivity.class));
  176.  
  177. }
  178. });
  179.  
  180.  
  181.  
  182. mLogout.setOnClickListener(new View.OnClickListener(){
  183. @Override
  184. public void onClick(View v){
  185. FirebaseAuth.getInstance().signOut();
  186. Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
  187. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  188. startActivity(intent);
  189. finish();
  190. return;
  191. }
  192. });
  193. getPermissions();
  194. }
  195.  
  196. private void getPermissions() {
  197. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  198. requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS,Manifest.permission.READ_CONTACTS},1);
  199. }
  200. }
  201.  
  202.  
  203. }
  204.  
  205. import androidx.appcompat.app.AppCompatActivity;
  206. import androidx.recyclerview.widget.LinearLayoutManager;
  207. import androidx.recyclerview.widget.RecyclerView;
  208.  
  209. import android.database.Cursor;
  210. import android.os.Bundle;
  211. import android.provider.ContactsContract;
  212. import android.telephony.TelephonyManager;
  213. import android.widget.LinearLayout;
  214.  
  215. import com.google.firebase.database.DataSnapshot;
  216. import com.google.firebase.database.DatabaseError;
  217. import com.google.firebase.database.DatabaseReference;
  218. import com.google.firebase.database.FirebaseDatabase;
  219. import com.google.firebase.database.Query;
  220. import com.google.firebase.database.ValueEventListener;
  221.  
  222. import java.util.ArrayList;
  223.  
  224. public class FindUserActivity extends AppCompatActivity {
  225. private RecyclerView mUserList;
  226. private RecyclerView.Adapter mUserListAdapter;
  227. private RecyclerView.LayoutManager mUserListLayoutManager;
  228. ArrayList<UserObject> userList,contactList;
  229. @Override
  230. protected void onCreate(Bundle savedInstanceState) {
  231. super.onCreate(savedInstanceState);
  232. setContentView(R.layout.activity_find_user);
  233. contactList= new ArrayList<>();
  234. userList= new ArrayList<>();
  235.  
  236. initializeRecyclerView();
  237.  
  238. getContactsList();
  239. }
  240.  
  241. private void getContactsList(){
  242. String ISOPrefix = getCountryISO();
  243. Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
  244. while(phones.moveToNext()){
  245. String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
  246. String phone = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
  247. phone = phone.replace("","");
  248. phone = phone.replace("-","");
  249. phone = phone.replace("(","");
  250. phone = phone.replace(")","");
  251. if(!String.valueOf(phone.charAt(0)).equals("+"))
  252. phone = ISOPrefix + phone;
  253.  
  254.  
  255.  
  256. UserObject mContact = new UserObject(name,phone);
  257. contactList.add(mContact);
  258. getUserDeatails(mContact);
  259. }
  260. }
  261.  
  262. private void getUserDeatails(UserObject mContact) {
  263. DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("user");
  264. Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
  265. query.addListenerForSingleValueEvent(new ValueEventListener() {
  266. @Override
  267. public void onDataChange(DataSnapshot dataSnapshot) {
  268. if(dataSnapshot.exists()){
  269. String phone = "";
  270. String name = "";
  271. for(DataSnapshot childSnapshot : dataSnapshot.getChildren()){
  272. if(childSnapshot.child("phone").getValue()!= null)
  273. phone = childSnapshot.child("phone").getValue().toString();
  274. if(childSnapshot.child("name").getValue()!= null)
  275. phone = childSnapshot.child("name").getValue().toString();
  276. UserObject mUser = new UserObject(name,phone);
  277. userList.add(mUser);
  278. mUserListAdapter.notifyDataSetChanged();
  279. return;
  280.  
  281. }
  282. }
  283. }
  284.  
  285. @Override
  286. public void onCancelled(DatabaseError databaseError) {
  287.  
  288. }
  289. });
  290. }
  291.  
  292. private String getCountryISO(){
  293. String iso =null;
  294. TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
  295. if(telephonyManager.getNetworkCountryIso() != null)
  296. if(telephonyManager.getNetworkCountryIso().toString().equals(""))
  297. iso=telephonyManager.getNetworkCountryIso().toString();
  298. return CountryToPhonePrefix.getPhone(iso);
  299. }
  300. private void initializeRecyclerView(){
  301. mUserList= findViewById(R.id.userList);
  302. mUserList.setNestedScrollingEnabled(false);
  303. mUserList.setHasFixedSize(false);
  304. mUserListLayoutManager = new LinearLayoutManager(getApplicationContext(), RecyclerView.VERTICAL,false);
  305. mUserList.setLayoutManager(mUserListLayoutManager);
  306. mUserListAdapter = new UserListAdapter(userList);
  307. mUserList.setAdapter(mUserListAdapter);
  308. }
  309. }
  310.  
  311. import android.view.LayoutInflater;
  312. import android.view.View;
  313. import android.view.ViewGroup;
  314. import android.widget.TextView;
  315.  
  316. import androidx.annotation.NonNull;
  317. import androidx.recyclerview.widget.RecyclerView;
  318.  
  319. import java.util.ArrayList;
  320.  
  321. public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.UserListViewHolder> {
  322. ArrayList<UserObject> userList;
  323. public UserListAdapter(ArrayList<UserObject> userList){
  324. this.userList=userList;
  325. }
  326.  
  327. @NonNull
  328. @Override
  329. public UserListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  330. View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user,null,false);
  331. RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
  332. layoutView.setLayoutParams(lp);
  333. UserListViewHolder rcv = new UserListViewHolder(layoutView);
  334. return rcv;
  335. }
  336.  
  337. @Override
  338. public void onBindViewHolder(@NonNull UserListViewHolder holder, int position) {
  339. holder.mName.setText(userList.get(position).getName());
  340. holder.mPhone.setText(userList.get(position).getPhone());
  341.  
  342. }
  343.  
  344. @Override
  345. public int getItemCount() {
  346. return userList.size();
  347. }
  348.  
  349.  
  350. public class UserListViewHolder extends RecyclerView.ViewHolder{
  351. public TextView mName,mPhone;
  352. public UserListViewHolder(View view){
  353. super(view);
  354. mName = view.findViewById(R.id.name);
  355. mPhone = view.findViewById(R.id.phone);
  356.  
  357. }
  358.  
  359. }
  360. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement