فعال کردن امکان نصب برنامه روی کارت حافظه
حتما میدانید در سیستم عامل اندروید، اپلیکیشنها به صورت پیش فرض روی حافظه داخلی دستگاه نصب میشوند. ممکن است برخی از کاربران بخصوص آنهایی که دستگاه با سخت افزار ضعیف و حافظه داخلی پایین در اختیار دارند، تمایل داشته باشند برخی از برنامهها را روی کارت حافظه یا همان حافظه خارجی دستگاه خود نصب کنند. بنابراین فعال کردن امکان نصب برنامه اندرویدی روی کارت حافظه ممکن است عاملی باشد برای جذب بیشتر مخاطب برای اپلیکیشن ما.
در این آموزش به نحوه فعال کردن قابلیت نصب اپلیکیشن بر روی حافظه خارجی دستگاههای اندرویدی میپردازیم.
در چه مواردی نصب برنامه روی کارت حافظه ضرورت دارد؟
به نام خدا. در حال حاضر شاید به سختی بتوان یک موبایل یا تبلت اندرویدی را در بازار پیدا کرد که حافظه داخلی یا به عبارتی RAM آن کمتر از ۱۶ گیگابایت باشد. هنوز یادم نرفته که اولین گوشی اندرویدی من فقط ۴ گیگابایت حافظه داخلی داشت و دائما با مشکل کمبود حافظه برای نصب برنامهها مواجه بودم.
هرچند با بالا رفتن ظرفیت حافظه داخلی دیوایسها نیاز کمتری به فعال کردن امکان نصب برنامه اندرویدی روی کارت حافظه احساس میشود با این حال هنوز هم دیوایسهای قدیمی با حافظه کمتر از ۸ گیگابایت در دست افراد دیده میشود و فعال بودن این قابلیت روی برنامه ما میتواند نقش بیشتری در مدیریت حافظه دستگاه این دسته از افراد داشته باشد.
بخصوص در برنامههای سنگین و مهمتر از همه در بازیها که معمولا حجم بالاتری را اشغال میکنند، این قابلیت بیش از پیش میتواند برای ما به عنوان توسعه دهنده و برنامه نویس اندرویدی در دستور کار قرار گیرد.
در ادامه مبحث به نحوه فعالسازی و همچنین جزئیات این قابلیت میپردازیم.
تعیین محل نصب اپلیکیشن در سیستم عامل اندروید
توسعه دهندگان سیستم عامل اندروید با انتشار اندروید ۲٫۲ (API 8) قابلیت جدیدی را در اختیار برنامه نویسان قرار دادند که به سادگی میتوان تنظیمات مربوط به محل نصب برنامه را درون مانیفست تعیین کرد. با توجه به اینکه زمان زیادی از معرفی اندروید ۲٫۲ گذشته و بعید است دستگاهی با اندروید پایینتر از ۴ فعال باشد، از بابت سازگاری این قابلیت با دستگاههای موجود در اختیار کاربران جای نگرانی نیست.
برای اینکار کافیست ویژگی android:installLocation را به همراه یک مقدار، درون تگ
![تعریف ویژگی installLocation در مانیفست](https://android-studio.ir/wp-content/uploads/sd/add_installLocation_attribute_to_android_project_manifest.png)
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 را انتخاب کنیم. لازم به تاکید است که ضمانتی در خصوص نصب برنامه روی حافظه خارجی وجود ندارد.
البته در تعدادی از دستگاهها، در قسمت ویژه توسعه دهندگان (Developer Options) گزینهای با نام Force allow apps on external وجود دارد که با فعال کردن آن، این امکان میسر خواهد بود:
![گزینه Force allow apps on external در Developer Options](https://android-studio.ir/wp-content/uploads/sd/force_allow_apps_on_external.png)
اما توجه داشته باشید برای کاربران به عنوان مخاطب عام برنامه نمیتوان روی این گزینه حساب کرد.
لازم به ذکر است با تعیین فضای خارجی به عنوان محل نصب برنامه، فقط فایل APK روی حافظه خارجی قرار گرفته و مابقی موارد مانند دادهها، دیتابیس برنامه و سایر موارد باز هم روی حافظه داخلی ذخیره میشود.
در چه مواردی نباید برنامه روی حافظه خارجی نصب شود؟
چنانچه به هر دلیلی حتی برای چند لحظه حافظه خارجی از دستگاه جدا شود، میتواند برخی از عملکردهای برنامه ما را تحت تاثیر قرار داده و باعث بروز مشکل شود.
برای مثال قبلا با کاربرد Service ها در اندروید آشنا شدیم. چنانچه در اپ از سرویسها استفاده کرده باشیم، هنگام جدا شدن کارت حافظه از دستگاه، سرویس متوقف شده و با اتصال مجدد آن به دستگاه، سرویس به صورت خودکار مجدد راه اندازی نمیشود.
همچنین در صورت استفاده از AlarmManager در برنامه، با جدا شدن کارت حافظه آلارمی که توسط این متد ثبت کردهایم لغو شده و با اتصال مجدد حافظه خارجی، به صورت خودکار فعال نخواهد شد.
به عنوان آخرین مثال، چنانچه بخواهیم با استفاده از Broadcast Receiver ها رویداد ACTION_BOOT_COMPLETED را شنود کنیم، با توجه به اینکه پیغام رویداد بوت شدن دستگاه قبل از شناسایی کارت حافظه توسط سیستم عامل ارسال میشود، امکان شنود این رویداد در برنامه ما فراهم نخواهد بود.
موفق و پیروز باشید
مطالعهی بیشتر:
https://developer.android.com/guide/topics/data/install-location
تعداد صفحات : ۵
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی
سلام این گزینه ای که تو توسعه دهنده ها هست برای من فعال نمیشه لطفا کمک کنید
ممکنه برای هر نسخه از اندروید متفاوت باشه. نسخه مدنظرتون رو گوگل کنید
با سلام.
ببخشید الان دقیقا باید برای شروع از کجا اقدام کنیم؟ از چه برنامه ای یا چه ویژگی ای استفاده کنیم؟ اندروید من ۶ هست و میخوام یک فایل حدودا ۶۵۰ مگابایتی رو از اول روی کارت حافظه بریزم چون بعد نصب امکان انتقال برنامه به کارت sd هست ولی گوشی میگه فضای ذخیره سازی ممکن نیست…
باید از کجا اقدام به نوشتن اون متنی که گفتید کرد؟
ممنون میشم پاسخ بدید.
کدوم متن منظورتونه؟ توضیحات واضح هست. ضمن اینکه این آموزش مربوط به نصب برنامه روی کارت هست نه انتقال فایل ها
سلام ببخشید جت پک کامپوز را هم لطفا اضافه فرمایید. با تشکر
از تهران تا تبریز متن نوشتین یه کلمشم بدرد بخور نیست چون جز خودتونو امثال خودتون کسی متوحه حرفاتون نمیشه یه سایت مافوق بی ارزش جمع کنین سنگین تره
ممنون از نظرتون
این فایل androidmanifest چطوری میتونم پیداش کنم و ویرایش کنم ؟؟؟؟
در این آموزش توضیح داده شده:
https://android-studio.ir/create-android-project-and-its-structure
اگه در مانیفست محل نصب رو انتخاب نکنیم و چیزی ننویسیم، به صورت پیش فرض اپ روی حافظه داخلی نصب میشه؟
بله
توی برخی دستگاهها بلافاصله بعد از خارجکردن کارت حافطه، برنامههای نصبشده روی اون هم غیرفعال و از دسترس خارج میشن!