فعال کردن امکان نصب برنامه روی کارت حافظه

آموزش فعال کردن امکان نصب برنامه روی کارت حافظه

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

در چه مواردی نصب برنامه روی کارت حافظه ضرورت دارد؟

به نام خدا. در حال حاضر شاید به سختی بتوان یک موبایل یا تبلت اندرویدی را در بازار پیدا کرد که حافظه داخلی یا به عبارتی RAM آن کمتر از ۱۶ گیگابایت باشد. هنوز یادم نرفته که اولین گوشی اندرویدی من فقط ۴ گیگابایت حافظه داخلی داشت و دائما با مشکل کمبود حافظه برای نصب برنامه‌ها مواجه بودم.
هرچند با بالا رفتن ظرفیت حافظه داخلی دیوایس‌ها نیاز کمتری به فعال کردن امکان نصب برنامه اندرویدی روی کارت حافظه احساس می‌شود با این حال هنوز هم دیوایس‌های قدیمی با حافظه کمتر از ۸ گیگابایت در دست افراد دیده می‌شود و فعال بودن این قابلیت روی برنامه ما می‌تواند نقش بیشتری در مدیریت حافظه دستگاه این دسته از افراد داشته باشد.
بخصوص در برنامه‌های سنگین و مهمتر از همه در بازی‌ها که معمولا حجم بالاتری را اشغال می‌کنند، این قابلیت بیش از پیش می‌تواند برای ما به عنوان توسعه دهنده و برنامه نویس اندرویدی در دستور کار قرار گیرد.
در ادامه مبحث به نحوه فعالسازی و همچنین جزئیات این قابلیت می‌پردازیم.

تعیین محل نصب اپلیکیشن در سیستم عامل اندروید

توسعه دهندگان سیستم عامل اندروید با انتشار اندروید ۲٫۲ (API 8) قابلیت جدیدی را در اختیار برنامه نویسان قرار دادند که به سادگی می‌توان تنظیمات مربوط به محل نصب برنامه را درون مانیفست تعیین کرد. با توجه به اینکه زمان زیادی از معرفی اندروید ۲٫۲ گذشته و بعید است دستگاهی با اندروید پایینتر از ۴ فعال باشد، از بابت سازگاری این قابلیت با دستگاه‌های موجود در اختیار کاربران جای نگرانی نیست.
برای اینکار کافیست ویژگی android:installLocation را به همراه یک مقدار، درون تگ فایل AndroidManifest.xml پروژه اضافه کنیم:

تعریف ویژگی installLocation در مانیفست
تعریف ویژگی installLocation در مانیفست

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.android_studio.sdcard"
    android:installLocation="auto">

    . . .

</manifest>

همانطور که در تصویر مشاهده می‌کنید برای این ویژگی سه مقدار مشخص شده که بسته به نیازی که داریم می‌توان یک مورد را انتخاب کرد. کاربرد هریک از این ۳ آیتم به شرح زیر است:
Auto: چنانچه برای ویژگی installLocation مقدار auto را انتخاب کنیم، برنامه اندرویدی ما ممکن است روی حافظه خارجی (کارت SD) نصب شود اما تضمینی وجود نداشته و سیستم عامل برای انتخاب محل مناسب برای نصب برنامه، ملاک‌های متعددی را بررسی می‌کند. یکی از این آیتم‌ها، میزان فضای باقیمانده از حافظه داخلی است. یعنی چنانچه حافظه داخلی پر شده و کارت حافظه هم روی دستگاه موجود باشد، به احتمال زیاد برنامه روی حافظه خارجی نصب خواهد شد.
همچنین بعد از نصب برنامه، کاربر می‌تواند در قسمت مدیریت برنامه‌ها در سیستم عامل خود، محل قرارگیری اپلیکیشن را از حافظه داخلی به خارجی و یا بلعکس تغییر دهد. اگر برنامه روی حافظه داخلی نصب شده باشد، کاربر می‌تواند با استفاده از گزینه Move to SD Card آنرا به حافظه خارجی دستگاه منتقل کند.
preferExternal: با تعریف این مقدار برای ویژگی installLocation در مانیفست پروژه اندرویدی، به سیستم عامل اعلام می‌کنیم که ترجیح (prefer) می‌دهیم اپ ما روی حافظه خارجی نصب شود. اما از واژه “ترجیح” می‌توان فهمید که ضمانتی در کار نیست و اینکه برنامه ما روی حافظه خارجی نصب شود یا داخلی باز هم به تصمیم سیستم عامل بستگی دارد.
برای مثال چنانچه حافظه خارجی ظرفیت لازم برای قرارگیری فایل برنامه را نداشته باشد، عمل نصب روی حافظه داخلی انجام خواهد شد.
internalOnly: همانطور که از نام آن پیداست، با تعیین این مقدار، امکان نصب اپلیکیشن فقط روی حافظه داخلی امکان پذیر خواهد بود و در آینده هم کاربر امکان انتقال آن به حافظه خارجی را نخواهد داشت.
بنابراین برای فعال کردن امکان نصب برنامه اندرویدی روی کارت حافظه لازم است مقدار preferExternal را انتخاب کنیم. لازم به تاکید است که ضمانتی در خصوص نصب برنامه روی حافظه خارجی وجود ندارد.

نکته: در برخی از موبایل‌ها یا تبلت‌های اندرویدی، قابلیت نصب برنامه روی حافظه خارجی حتی با وجود فعال بودن preferExternal در برنامه، توسط سازنده دستگاه غیر فعال شده و حتی پس از نصب روی حافظه داخلی هم امکان انتقال آن به حافظه خارجی وجود ندارد.
البته در تعدادی از دستگاه‌ها، در قسمت ویژه توسعه دهندگان (Developer Options) گزینه‌ای با نام Force allow apps on external وجود دارد که با فعال کردن آن، این امکان میسر خواهد بود:

گزینه Force allow apps on external در Developer Options
گزینه Force allow apps on external در Developer Options

اما توجه داشته باشید برای کاربران به عنوان مخاطب عام برنامه نمی‌توان روی این گزینه حساب کرد.

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

در چه مواردی نباید برنامه روی حافظه خارجی نصب شود؟

چنانچه به هر دلیلی حتی برای چند لحظه حافظه خارجی از دستگاه جدا شود، می‌تواند برخی از عملکردهای برنامه ما را تحت تاثیر قرار داده و باعث بروز مشکل شود.
برای مثال قبلا با کاربرد Service ها در اندروید آشنا شدیم. چنانچه در اپ از سرویس‌ها استفاده کرده باشیم، هنگام جدا شدن کارت حافظه از دستگاه، سرویس متوقف شده و با اتصال مجدد آن به دستگاه، سرویس به صورت خودکار مجدد راه اندازی نمی‌شود.
همچنین در صورت استفاده از AlarmManager در برنامه، با جدا شدن کارت حافظه آلارمی که توسط این متد ثبت کرده‌ایم لغو شده و با اتصال مجدد حافظه خارجی، به صورت خودکار فعال نخواهد شد.
به عنوان آخرین مثال، چنانچه بخواهیم با استفاده از Broadcast Receiver ها رویداد ACTION_BOOT_COMPLETED را شنود کنیم، با توجه به اینکه پیغام رویداد بوت شدن دستگاه قبل از شناسایی کارت حافظه توسط سیستم عامل ارسال می‌شود، امکان شنود این رویداد در برنامه ما فراهم نخواهد بود.
موفق و پیروز باشید

مطالعه‌ی بیشتر:

https://developer.android.com/guide/topics/data/install-location

دانلود نسخه PDF این آموزش
تعداد صفحات : ۵
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی
این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید
پرسش‌ها و دیدگاه‌های کاربران
دوره آموزش برنامه نویسی اندروید
دوره آموزش برنامه نویسی اندروید

با دریافت این دوره به تمامی آموزش‌های غیر رایگان و رایگان موجود در وب سایت دسترسی دارید که تخفیفی برای آموزش‌های غیر رایگان نیز درنظر گرفته شده. این پکیج به دو صورت دانلودی و ارسال پستی ارائه می‌گردد.
آموزش‌های اندروید استودیو در دو دسته «پایه» و «تکمیلی» منتشر می‌شوند.
آموزش‌های پایه شامل مباحث اصلی و ضروری و آموزش‌های تکمیلی مطالبی است که می‌بایست در کنار مطالب اصلی بررسی شود.
با خرید این دوره، به تمامی آموزش‌های غیر رایگانی که در آینده منتشر می‌شود نیز به صورت رایگان دسترسی خواهید داشت!

یک دیدگاه بنویسید

پرسش‌های زیر تایید و پاسخ داده نـــخواهند شد:
۱: جزء موارد مطرح شده در صفحات مشکلات و پرسش‌های رایج و بروزرسانی‌های محتوای آموزشی باشد
۲: سوال قبلا توسط کاربران در دیدگاه‌ها مطرح و پاسخ داده شده باشد
۳: پرسش خارج از مبحث آموزشی موجود در این صفحه باشد