نموذج تسجيل الدخول
activity_main2.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#3b5999" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="مرحباً يا .." android:textSize="15sp" android:layout_margin="30dp" android:textColor="#424242" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="اهلا وسهلا .." android:textColor="#424242" android:textSize="25sp" android:textStyle="bold" /> <Button android:id="@+id/signout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="40dp" android:layout_marginRight="40dp" android:layout_marginTop="80dp" android:background="@drawable/logout" /> </LinearLayout>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#3b5999" android:orientation="vertical"> <ImageView android:id="@+id/imageView2" android:layout_width="70dp" android:layout_height="70dp" android:layout_gravity="center" app:srcCompat="@drawable/login" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginBottom="50dp" android:padding="20dp" android:background="#f25"> <LinearLayout android:orientation="vertical" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:text="البريد الإلكتروني" android:layout_width="150dp" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_gravity="left" android:gravity="right" android:layout_margin="10dp" android:id="@+id/email" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15sp" android:layout_margin="5dp" android:layout_gravity="center_vertical" android:gravity="center_vertical|right" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="150dp" android:layout_height="wrap_content" android:inputType="textPassword" android:ems="10" android:layout_gravity="left" android:gravity="right" android:layout_margin="10dp" android:id="@+id/password" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="كلمة المرور" android:textSize="15sp" android:layout_margin="5dp" android:layout_gravity="center_vertical" android:gravity="center_vertical|right" /> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:background="#f25"> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="30dp" android:text="تسجيل الدخول" android:layout_margin="5dp" android:paddingRight="5dp" android:paddingLeft="5dp" android:background="#af19" /> <Button android:id="@+id/signup" android:layout_width="wrap_content" android:layout_height="30dp" android:text="تسجيل" android:layout_margin="5dp" android:paddingRight="5dp" android:paddingLeft="5dp" android:background="#af19" /> </LinearLayout> </LinearLayout> </LinearLayout>
MainActyivity.java
import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; import static com.bumptech.glide.request.RequestOptions.option; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInAccount; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.auth.api.signin.GoogleSignInResult; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.Scopes; import com.google.android.gms.common.SignInButton; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.OptionalPendingResult; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.Scope; import com.google.android.gms.common.api.Status; import com.google.android.gms.plus.Plus; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.squareup.picasso.Picasso; import java.io.FileInputStream; import java.sql.Driver; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MainActivity extends AppCompatActivity { EditText EMAIL, PASSWORD; Button SIGNIN, SIGNUP; private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAuth = FirebaseAuth.getInstance(); EMAIL = (EditText) findViewById(R.id.email); PASSWORD = (EditText) findViewById(R.id.password); SIGNIN = (Button) findViewById(R.id.login); SIGNUP = (Button) findViewById(R.id.signup); SIGNIN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if ((TextUtils.isEmpty(EMAIL.getText().toString())) && (TextUtils.isEmpty(PASSWORD.getText().toString()))) { Toast.makeText(getApplicationContext(), "من فضلك تأكد من ادخال البيانات", Toast.LENGTH_SHORT).show(); }else if (!isEmailValid(EMAIL.getText().toString())){ Toast.makeText(getApplicationContext(), "من فضلك أدخل بريد إلكتروني صالح", Toast.LENGTH_SHORT).show(); } else { SignIn(EMAIL.getText().toString(), PASSWORD.getText().toString()); } } }); SIGNUP.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if ((TextUtils.isEmpty(EMAIL.getText().toString())) || (TextUtils.isEmpty(PASSWORD.getText().toString()))) { Toast.makeText(getApplicationContext(), "من فضلك تأكد من ادخال البيانات", Toast.LENGTH_SHORT).show(); }else if (!isEmailValid(EMAIL.getText().toString())){ Toast.makeText(getApplicationContext(), "من فضلك أدخل بريد إلكتروني صالح", Toast.LENGTH_SHORT).show(); }else if (PASSWORD.getText().toString().length() < 6){ Toast.makeText(getApplicationContext(), "رجاءاً اختر كلمة المرور بعناية", Toast.LENGTH_SHORT).show(); }else { createAccount(EMAIL.getText().toString(), PASSWORD.getText().toString()); } } }); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { finish(); startActivity(new Intent(getApplicationContext(), Main2Activity.class)); } } }; mAuth.addAuthStateListener(mAuthListener); } public static boolean isEmailValid(String email) { boolean isValid = false; String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { isValid = true; } return isValid; } private void createAccount(String email, String password) { mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Toast.makeText(getApplicationContext(), "تم التسجيل بنجاح", Toast.LENGTH_SHORT).show(); SIGNUP.setVisibility(View.GONE); } } }); } private void SignIn(String email, String password) { mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { finish(); Toast.makeText(getApplicationContext(), "تم الدخول بنجاح", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplicationContext(), Main2Activity.class)); }else { Toast.makeText(getApplicationContext(), "يوجد خطأ في المعلومات التي تم تقديمها", Toast.LENGTH_SHORT).show(); } } }); } }
Main2Actyivity.java
package com.android.studio; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; public class Main2Activity extends AppCompatActivity { Button SIGNOUT; TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); tv = (TextView)findViewById(R.id.textView); if (user != null) { String email = user.getEmail(); tv.setText(email); } SIGNOUT = (Button) findViewById(R.id.signout); SIGNOUT.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FirebaseAuth.getInstance().signOut(); finish(); startActivity(new Intent(getApplicationContext(), MainActivity.class)); } }); } }
build gradle project
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.4' classpath 'com.google.gms:google-services:4.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
build gradle module
apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { applicationId "com.android.studio" minSdkVersion 18 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:design:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' implementation 'com.google.android.gms:play-services-auth:12.0.1' implementation 'com.google.firebase:firebase-messaging:12.0.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.google.firebase:firebase-core:16.0.0' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' implementation 'com.android.volley:volley:1.0.0' implementation 'com.google.android.gms:play-services-identity:15.0.1' implementation 'com.google.android.gms:play-services-plus:15.0.1' implementation 'com.google.firebase:firebase-auth:16.0.3' implementation 'com.google.android.gms:play-services-auth:15.0.1'} apply plugin: 'com.google.gms.google-services'
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.studio"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.example.user.sbtags.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Home" /> <activity android:name=".MapActivity" /> <activity android:name=".Main2Activity"></activity> </application> </manifest>
ما يجب عليك عمله
1-الذهاب الى موقع https://console.firebase.google.com/
2-انشاء مشروع جديد
3-android
4-الخانه الاولى package
لمعرفة package
شاهد هذا الدرس
-----------------------
الخانه الثانيه اختياري
---------------------------------------------
الخانه 3 وهي ال SHA1
5-تنزيل google-services.json
ثم انسخ الملف وقم بوضعه في app
ليست هناك تعليقات:
إرسال تعليق