مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش تشخیص و استفاده از حافظه جانبی در اندروید

تقریبا اکثر دستگاه های اندرویدی می توانند از حافظه های جانبی SD card ها استفاده کنند و داده ها را روی آن بنویسند و یا داده ها را از روی آن بخوانند. در این مطلب می خواهیم ببینیم که در چه صورتی می توان فهمید که آیا دستگاه در حال حاضر sd card دارد یا خیر. شما باید هر وقت که خواستین اطلاعات خود را داخل sd card قرار دهید چک کنید که آیا sd card وجود دارد یا خیر. برای این کار باید state حافظه sd card را به دست بیاوریم و اگر این state برابر با MEDIA_MOUNTED بود به این معنی است که حافظه sd card وجود دارد و درغیر این صورت این حافظه موجود نیست. برای مثال به کد زیر دقت کنید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  • در کد زیر مشخص می کنیم که آیا حافظه sd card به دستگاه متصل است و برای خواندن و نوشتن آماده است یا خیر
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

همانظور که در کد بالا می بینید با استفاده از متد getExternalStorageState می توان state یا وضعیت حافظه جانبی را به دست آورد.

  • گاهی ممکن است که حافظه جانبی به سیستم وصل باشد ولی به شکل فقط خواندنی یا read only باشد در این صورت باید برای فهمیدن این کار از کد زیر استفاده شود
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

دقت کنید که برای نوشتن و یا خواند از حافظه جانبی باید مجوز های زیر را به ترتیب در داخل فایل manifest قرار دهید.

<uses-permission android:name="android.permission.WRITEEXTERNALSTORAGE" />

<uses-permission android:name="android.permission.READEXTERNALSTORAGE" />

مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات