قفل گذاری بروی برنامه اندروید در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به قفل گذاری بروی برنامه اندروید در برنامه نویسی اندروید می پردازیم این آموزش به درخواست یکی از دوستان ایجاد شده است و کار برنامه به این شکل است که ابتدا یک پسورد از کاربر می گیرد و از دفعه بعد هر بار خواست وارد شود بررسی می کند که آیا اون کاربر پسورد را درست وارد کرده است یا خیر در ادامه با ما همراه باشید.
در اینجا ما از SharedPreferences استفاده کرده ایم در صورتی که این آموزش را مطالعه نکرده اید بهتر است آن را هیمنجا سرچ کرده و فرا گیرد سپس به ادامه این آموزش برگردید و اطلاعات در SharedPreferences ذخیره شده و هر وقت ما با آن نیاز داشتیم آن را بررسی می کنیم.
بخش activity_main.xml به شکل زیر می شود (دوستان ما از ConstraintLayout استفاده کرده ایم در صورتی که خطا داشتید آن بخش را پاک کرده و از RelativeLayout استفاده کنید و یا یک EditText و یک دکمه در صفحه اصلی خود قرار دهید چون این یک کتاب خانه جدید از اندروید هست ممکن است شما به مشکل بخورید)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="ir.input.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="283dp" android:layout_height="53dp" android:ems="10" android:hint="Enter Password" android:inputType="textPassword" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.505" android:layout_marginBottom="260dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" app:layout_constraintVertical_bias="0.815" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Store password" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/editText" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" app:layout_constraintVertical_bias="0.281" /> |
فقط در بالا یک دکمه و یک EditText یا ورودی متن قرار داده ایم بقیه کد ها برای کار دیگه است که اگر آنها را نزارید هم مهم نیست. (شکل زیر)
و بخش مربوط به کد برنامه (MainActivity.java) به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | package ir.programchi; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.regex.Pattern; import github.nisrulz.screenshott.ScreenShott; import id.zelory.compressor.Compressor; public class MainActivity extends AppCompatActivity { Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText ed= (EditText)findViewById(R.id.editText); Button btn = (Button)findViewById(R.id.btn); // read data :D programchi.ir SharedPreferences prefs = getSharedPreferences("Password_pref", MODE_PRIVATE); int launch = prefs.getInt("launched", 0); Toast.makeText(this, ""+launch, Toast.LENGTH_SHORT).show(); if(launch==1) { Intent i = new Intent(this,Main2Activity.class); startActivity(i); } else { // Do nothing :D } btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String password = ed.getText().toString(); if(password.matches("")) { Toast.makeText(MainActivity.this, "Edit Text is Null", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Your password is :"+password, Toast.LENGTH_LONG).show(); SharedPreferences.Editor editor = getSharedPreferences("Password_pref", MODE_PRIVATE).edit(); editor.putString("pass", password); editor.putInt("launched", 1); editor.apply(); Intent i = new Intent(v.getContext(),Main2Activity.class); startActivity(i); } } }); } } |
زمانی که روی دکمه کلیک می شود محتویات EditTExt در متغیر password نگه داری می شود بعد از آن بررسی می کنیم که EditText خالی نباشد در صورتی که خالی نبودش یک پیام بعلاوه پسورد برای شما نمایش داده می شود و با استفاده از SharedPreferences مقدار را در دیتابیس داخلی ذخیره می کنیم ما دو مقدار را ذخیره می کنیم یک اینکه آیا پسورد ذخیره شده و دو خود پسورد اولی یا launched به منظور اینکه اگه کاربر دوباره وارد برنامه شد وارد صفحه پرسش پسورد ار آن شود و دیگر در صفحه اصلی نباشد و خود پسورد هم برای بررسی اینکه کاربر پسورد را درست وارد کرده یا نه بعد از اینکه کاربر پسورد را وارد کرد وارد صفحه دوم (بررسی درست بودن پسورد) می شود که به شکل زیر می شود.
بخش activity_main2.xml (صفحه دوم) به شکل زیر می شود. کد زیر هم شامل ConstraintLayout در صورت خطا آن را پاک کرده و RelativeLayout اضافه کرده یا خودتان یک دکمه و یک EditText و یک Textview قرار دهید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="ir.input.Main2Activity"> <EditText android:id="@+id/editText2" android:layout_width="317dp" android:layout_height="41dp" android:ems="10" android:hint="Enter Your stored Password" android:inputType="textPassword" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.503" android:layout_marginBottom="260dp" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enter Password to login !" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toTopOf="@+id/editText2" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login !" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/editText2" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" app:layout_constraintVertical_bias="0.331" /> </android.support.constraint.ConstraintLayout> |
شکل زیر نمونه از آن است.
و کد بخش اکتیویتی دوم ما (Main2Actvity.java ) هم به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package ir.programchi; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Main2Activity extends AppCompatActivity { String _pass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Button btn = (Button)findViewById(R.id.button); final EditText ed =(EditText)findViewById(R.id.editText2); SharedPreferences prefs = getSharedPreferences("Password_pref", MODE_PRIVATE); _pass = prefs.getString("pass", "null"); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(ed.getText().toString().equals(_pass)) { Toast.makeText(Main2Activity.this, "You enter Password correctly", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Main2Activity.this, "You enterd Password Wrong", Toast.LENGTH_SHORT).show(); } } }); } } |
حالا ما در اینجا میام داده ای که در SharedPreferences ذخیره کردیم دریافت می کنیم و بررسی ها را انجام میدهیم.
این آموزش هم به پایان رسید موفق باشید.
سلام خسته نباشید من یه سوال گزاشتم اما جایی نیست که سوال خودمو ببینم که کسی جواب داده یا نه 😐 لطفا رسیدگی کنید ممنون .
سلام به ادرس زیر مراجعه کنید برای دیدن سوال های خودتان !
http://programchi.ir/%D9%BE%D8%A7%D8%B3%D8%AE-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86/?u=1
از بخش بالا “نایحه کاربری” به تمامی بخش ها می توانید دسترسی داشته باشید.
سلام
آموزش خوبی بود لطفا اگه می شود رمزگذاری و بازیابی رمز رو با اسکولایت بزارید
سلام و درود اگر منظورتان بازیابی رمز دیتابیس sqlite هست آموزشش را قرار داده ایم.
http://programchi.ir/?p=58719
در غیر اینصورت بفرمایید تا آموزش را ایجا کنیم موفق باشید.
سلام و خسته نباشید.
ببخشید من درست متوجه نشدم . من میخوام هربرنامه یی که دارم رو روش یه کد بزارم که اگه اون برنامه رو کسی دیگه نصب بکنه باز نشه و کد بخواد . اگه منظور همینه آموزش ویدیو بزارید. لطفا لازم دارم.
اگه کسی میتونه ویدیوشو درست کنه که جواب بده حاضرم جبرانش کنم.
سلام
نه منظورم این هست که الان شما آموزش رمز گذاشتن رو برنامه رو که قرار دادید و این امکان رو هم اضافه بکنید که اگه کاربر رمز رو فراموش کرد امکان بازیابی رمز رو داشته باشه ی برنامه دیدم که وقتی گزینه فراموشی رمز رو می زدید با توجه به اطلاعاتی که قبلا گرفته از کاربر گرفته بود براش رمز رو ایمیل می کرد یا میشه اس ام اس کرد حالا این کار رو نمی دونم چطور انجام دادند
ممنون میشم این آموزش را هم بزارید
منظورتان را در دفعه پیش درست متوجه نشده بودم آموزش را به ایگونه ایجاد می کنم.
سلام این آموزش رو ایجاد کردین? وقتی کاربر رمز عبور رو فراموش کرد.رمز واسش ایمیل بشه???
سلام خیر درخواست داده بودید ؟
در جواب کاربر زیتون که درخواست کرده بودن گفتین که ایجاد میکنید.
تعداد آموزش های بالاست به زودی قرار خواهد گرفت.
ممنونم
سلام
من این روش رو امتحان کردم ولی برنامه وقتی که کد اشتباه میدم قبول میکنه وکد جدید رو نشون میده و وارد برنامه میشه میشه بگی مشکل چیه؟ ممنون
سلام وقتتون بخیر …. من دقیقا همین کد رو قرار دادم …
اما وقتی در اکتیویتی اول پسورد رو وارد می کنم ارور میده و از برنامه میره بیرون!
سلام وقتتون بخیر برای گذاشتن پسورد منحصر به فرد نیاز به آموزش دارم ممنون میشم که اموزشش رو بزارین.مثلا هر کاربر که برنامه رو خریداری میکنه یک پسورد منحصر به فرد خودش داشته باشه و وارد کنه و وارد شه
سلام خوبید اموزش بزار که چطور یک نرم افزار رو بصورت ماهانه اکتیو کرد یعنی اگه یک نرم افزار بصورت یک ماه اکتیو کرده باشد بعد از یک ماه غیره فعال خواهد شد