کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش ذخیره سازی جفت کلید-مقدار (قسمت دوم)

 

clip_image001

دوره آموزش برنامه نویسی اندروید

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

 

آموزش ذخیره سازی جفت کلید-مقدار قسمت دوم 

 تست و اجرا برنامه اندروید

برنامه را راه اندازی کرده و درایه ی Settings را از action bar انتخاب کنید. اکنون باید بتوانید یک URL در این قسمت وارد کنید. حال در صورت زدن دکمه ی بازگشت و دکمه ی تجدید، مقدار url preference باید در activity مربوط مورد استفاده قرار گرفته شود.

تمرین بیشتر : نمایش مقدار جاری در settings

تکه کد زیر نحوه ی نمایش مقدار جاری را در صفحه ی preference نمایش می دهد.

package com.example.android.rssfeed;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
public class SettingsActivity extends PreferenceActivity implements
       
OnSharedPreferenceChangeListener {
   
@Override
   
public void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.mypreferences);

       
// show the current value in the settings screen
       
for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
            initSummary(getPreferenceScreen().getPreference(i));
        }
    }
   
@Override
   
protected void onResume() {
       
super.onResume();
        getPreferenceScreen().getSharedPreferences()
               .registerOnSharedPreferenceChangeListener(
this);
    }
   
@Override
   
protected void onPause() {
       
super.onPause();
        getPreferenceScreen().getSharedPreferences()
          .unregisterOnSharedPreferenceChangeListener(
this);
    }
   
@Override
   
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences
،
                                          String key) {
        updatePreferences(findPreference(key));
    }
   
private void initSummary(Preference p) {
       
if (p instanceof PreferenceCategory) {
            PreferenceCategory cat = (PreferenceCategory) p;
           
for (int i = 0; i < cat.getPreferenceCount(); i++) {
                initSummary(cat.getPreference(i));
            }
        }
else {
            updatePreferences(p);
        }
    }
   
private void updatePreferences(Preference p) {
       
if (p instanceof EditTextPreference) {
            EditTextPreference editTextPref = (EditTextPreference) p;
            p.setSummary(editTextPref.getText());
        }
    }
}

 نمایش مقادیر جاری در preferenceها

6. رابط برنامه سازی کاربردی فایل اندروید

استفاده از رابط برنامه سازی کاربردی (API) فایل

دسترسی به سیستم فایل از طریق کلاس های استاندارد java.io صورت می پذیرد.

اندروید همچنین کلاس های کمک رسانی (helper class) متعددی جهت ایجاد و دسترسی به فایل ها و پوشه ها جدید عرضه می کند، به عنوان مثال می توان به متد  getDir(String، int)اشاره کرد که یک پوشه جدید ایجاد کرده و دسترسی به آن را امکان پذیر می کند یا متد openFileInput(String s) یک فایل ویژه ی ورودی (input) باز می کند و یا متد openFileOutput(String s، Context.MODE_PRIVATE) که یک فایل جدید ایجاد می کند.

اگرچه اندروید از فایل های world readable/writable پشتیبانی می کند، اما توصیه می شود که فایل های یک برنامه ی کاربردی را مخصوص خود آن اپلیکیشن خصوصی نگه داریم و در صورت نیاز به تبادل یا به اشتراک گذاری داده با دیگر اپلیکیشن ها از Content Provider کمک بگیریم.

مثال زیر استفاده از API را به نمایش می گذارد.

public class Util {
   
public static void writeConfiguration(Context ctx) {
        BufferedWriter writer =
null;
       
try {
            FileOutputStream openFileOutput = ctx.openFileOutput(
"config.txt"، Context.MODE_PRIVATE);
            openFileOutput.write(
"This is a test1.".getBytes());
            openFileOutput.write(
"This is a test2.".getBytes());
        }
catch (Exception e) {
           
throw new RuntimeException(e);
        }
finally {
           
if (writer != null) {
               
try {
                    writer.close();
                }
catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}

public void readFileFromInternalStorage(String fileName) {
    String eol = System.getProperty(
"line.separator");
    BufferedReader input =
null;
   
try {
        input =
new BufferedReader(new InputStreamReader(openFileInput(fileName)));
        String line;
        StringBuffer buffer =
new StringBuffer();
       
while ((line = input.readLine()) != null) {
            buffer.append(line + eol);
        }
    }
catch (Exception e) {
        e.printStackTrace();
    }
finally {
       
if (input != null) {
           
try {
                input.close();
            }
catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 حافظه ی خارجی

اندروید قابلیت دسترسی و استفاده از حافظه ی خارجی را نیز پشتیبانی می کند، به طور مثال SD card. کلیه ی فایل ها و پوشه های موجود در سیستم حافظه ی خارجی برای تمامی اپلیکیشن های نصب شده روی دستگاه اندروید البته با مجوز لازم امکان پذیر می باشد.

برای اینکه برنامه بتواند اطلاعات را از حافظه ی خارجی بخواند نیاز به مجوز android.permission.READ_EXTERNAL_STORAGE دارد، در حالی که به منظور نوشتن اطلاعات در حافظه ی خارجی، برنامه ی کاربردی مجوز android.permission.WRITE_EXTERNAL_STORAGE را نیاز دارد. با فراخوانی متد Environment.getExternalStorageDirectory() نیز می توان به مسیر سیستم حافظه ی خارجی دست پیدا کرد.

به واسطه ی صدا زنی متد ذیل، برنامه نویس قادر خواهد بود وضعیت کنونی سیستم حافظه ی خارجی را بررسی کند. چنانچه دستگاه اندروید به وسیله ی USB به رایانه متصل باشد، دیگر SD Card ای که برای سیستم حافظه ی خارجی مورد استفاده قرار می گیرد در دسترس نخواهد بود.

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

مثال زیر فرایند خواندن از حافظه ی خارجی را نمایش می دهد.

private void readFileFromSDCard() {
    File directory = Environment.getExternalStorageDirectory();
   
// assumes that a file article.rss is available on the SD card
   
File file = new File(directory + "/article.rss");
   
if (!file.exists()) {
       
throw new RuntimeException("File not found");
    }
    Log.e(
"Testing"، "Starting to read");
    BufferedReader reader =
null;
   
try {
        reader =
new BufferedReader(new FileReader(file));
        StringBuilder builder =
new StringBuilder();
        String line;
       
while ((line = reader.readLine()) != null) {
            builder.append(line);
        }
    }
catch (Exception e) {
        e.printStackTrace();
    }
finally {
       
if (reader != null) {
           
try {
                reader.close();
            }
catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

1394/07/27 4284 2774
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...