با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. اندروید متد های زیادی را برای ذخیره داده های یک برنامه فراهم می کند. یکی از این متدها، SharedPreferences است. SharedPreferences شما را قادر به ذخیره و بازیابی اطلاعات در قالب key و مقدار pair می کند. برای استفاده از SharedPreferences در اندروید باید متد ()getSharedPreferences که یک SharedPreference را به فایل حاوی مقدار preferences متصل می کند را فراخوانی کنید. در ادامه ی این مبحث به طرز استفاده از SharedPreferences در برنامه نویسی اندروید پرداخته ایم.
در ادامه مبحث شما را با ساختار کلی SharedPreferences در برنامه نویسی اندروید و متدهای مربوطه آشنا می کنیم.
همانطور که اشاره شد برای استفاده از SharedPreferences در اندروید باید متد ()getSharedPreferences را بصورت زیر فراخوانی کنید:
1 | SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); |
پارامتر اول key و پارامتر دوم MODE. است،حالت های دیگری نیز در دسترس هستند که به شرح زیر است:
ردیف | حالت و توضیحات آن |
---|---|
۱ | MODE_APPEND یک preferences جدید به preferences های موجود اضافه می کند. |
۲ | MODE_ENABLE_WRITE_AHEAD_LOGGING flag دیتابیس وقتی که به طور پیش فرض login کنید تنظیم می کند. |
۳ | MODE_MULTI_PROCESS این متدبرای اصلاح modification از preferences است حتی اگر sharedpreference به طور کامل بارگذاری نشده باشد. |
۴ | MODE_PRIVATE در این حالت یک فایل فقط در صورتیکه برنامه فراخوانی شده باشد در دسترس قرار می گیرد. |
۵ | MODE_WORLD_READABLE به برنامه های دیگر اجازه خواندن preferences ها را می دهد. |
۶ | MODE_WORLD_WRITEABLE به برنامه های دیگر اجازه نوشتن preferences ها را می دهد. |
با استفاده از کلاس SharedPreferences.Editor می توانید چیزی را درsharedpreferences ذخیره کنید.
متد edit را از در sharedpreferences فراخوانی کنید تا به آن در یک ادیتور دسترسی داشته باشید:
1 2 3 | Editor editor = sharedpreferences.edit(); editor.putString("key", "value"); editor.commit(); |
علاوه بر متد putString که در کد فوق به آن اشاره کردیم، متدهای دیگری نیز در کلاس editor در دسترس است.
این متدها اجازه ویرایش داده های داخل shared preferences را می دهد که به شرح زیر هستند:
ردیف | حالت و توضیحات آن |
---|---|
۱ | apply() این یک متد انتزاعی است. این تغییرات شما را از ویرایشگر به شیء به shared preferences که شما فراخوانی می کنید، اعمال می کند. |
۲ | clear() تمام مقادیر را از editor پاک می کند. |
۳ | remove(String key) این مقداری که کلید آن به عنوان یک پارامتر منتقل می شود را حذف می کند. |
۴ | putLong(String key, long value) این یک مقدار long را در preference editor ذخیره می کند. |
۵ | putInt(String key, int value) این یک مقدار integer را در preference editor ذخیره می کند. |
۶ | putFloat(String key, float value) این یک مقدار float را در preference editor ذخیره می کند. |
در ادامه با ارائه ی یک مثال کاربرد Shared Preferences در اندروید را نشان می دهیم.
این برنامه شامل سه فیلد text است که هنگامی که برنامه بسته شده و مجددا باز می شود مقادیر تایپ شده در فیلدها را حفظ می کند.
نکته: برای تست این برنامه باید از یک دستگاه اندروید واقعی استفاده کنید.
مراحل انجام کار:
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی تحت عنوان پکیج com.example.Pvlearn.myapplication دنبال کنید. |
۲ | به محتوای فایل src/MainActivity.java کدهای progress dialog را برای نمایش آن اضافه کنید. |
۳ | طراحی مناسب با این برنامه را به res/layout/activity_main اضافه کنید. |
۴ | برنامه را اجرا کنید تا دستگاه اندروید شما نتیجه را نمایش دهد. |
محتوای فایل 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 | package com.example.Pvlearn.myapplication; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { EditText ed1,ed2,ed3; Button b1; public static final String MyPREFERENCES = "MyPrefs" ; public static final String Name = "nameKey"; public static final String Phone = "phoneKey"; public static final String Email = "emailKey"; SharedPreferences sharedpreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed1=(EditText)findViewById(R.id.editText); ed2=(EditText)findViewById(R.id.editText2); ed3=(EditText)findViewById(R.id.editText3); b1=(Button)findViewById(R.id.button); sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String n = ed1.getText().toString(); String ph = ed2.getText().toString(); String e = ed3.getText().toString(); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(Name, n); editor.putString(Phone, ph); editor.putString(Email, e); editor.commit(); Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show(); } }); } } |
محتوای فایل modified main در res/layout/activiy_main.xml:
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 68 69 70 71 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Shared Preference " android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="35dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pvlearn" android:id="@+id/textView2" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:textSize="35dp" android:textColor="#ff16ff01" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_below="@+id/textView2" android:layout_marginTop="67dp" android:hint="Name" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_below="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:hint="Pass" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText3" android:layout_below="@+id/editText2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:hint="Email" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" android:id="@+id/button" android:layout_below="@+id/editText3" android:layout_centerHorizontal="true" android:layout_marginTop="50dp" /> </RelativeLayout> |
محتوای فایل res/values/strings.xml:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.Pvlearn.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس پنجره ای برای انتخاب بین دستگاه اندروید شما و شبیه ساز اندروید ظاهر خواهد شد:
از پنجره ی فوق دستگاه موبایل خود را انتخاب کرده روی ok کلیک کنید.
صفحه زیر نمایش داده می شود، سپس فیلدهای text آن را با اطلاعاتی پر کرده و روی save کلیک کنید:
حالا وقتی روی save کلیک کنید اطلاعات در shared preferences ذخیره می شود.
حالا روی back کلیک کرده و از برنامه خارج شوید.
اکنون دوباره آن را باز کنید و تمام متن هایی را که در برنامه خود نوشته اید را خواهید دید.
در اندروید روش های متعددی برای ذخیره کردن داده های دریافتی از کاربران ورجود دارد که یکی از این روش ها SharedPreferences است با استفاده از SharedPreferences در برنامه نویسی اندروید ، می توان داده های دریافتی را در فایلی ذخیره و برای مراجعه مجدد کاربران استفاده کرد.
در بخش بعد به بررسی پروتکل SIP در اندروید می پردازیم.