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

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه و چهارم: انتقال اپلیکیشن به حافظه SD )

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

اگر چه این مقدار نیز می تواند در ابتدا کافی باشد ولی به مرور زمان ممکن است حافظه داخلی بعد از مدتی دچار کمبود حافظه شود.

امروزه بیشتر گوشی ها و تبلت های اندرویدی ، امکان اضافه کردن Sd Card را دارند. که می توان با استفاده از آن بعضی از اپلیکیشن ها را به کارت حافظه انتقال داد.

در این قسمت از برنامه نویسی اندروید، می خواهیم به شما آموزش دهیم که چگونه با استفاده از کدنویسی ، این امکان را برای اپلیکیشن خود به وجود آورید.

به عبارتی اگر پروژه هایی که تا به حال نوشته اید، قابلیت Move to Sd card آن ها، غیرفعال بوده است، به دلیل آن است که این امکان را برای پروژه ی خود به وجود نیاورده بودید.

می توان با دسترسی دادن به این پروژه، طبق چیزی که در زیر گفته شده است، این کار را انجام داد.

ولی ما این آموزش را به صورت پروژه محور انجام داده و با استفاده از Intent ، می خواهیم به سراغ تنظیمات این اپلیکیشن رفته تا این بخش را به صورت مستقیم مشاهده کنیم.

همچنین برای کسانی که می خواهند از درون یک اپلیکیشن به صورت مستقیم، به قسمت تنظیمات آن بروند، آموزش خوبی است.

تعیین دسترسی ها

برای آن که بتوانیم به Sd Card منتقل نماییم و در واقع انتقال این اپلیکیشن به حافظه Sd ، باید دسترسی های آن را پیکربندی نماییم.

به سراغ manifests->AndoirdManifest.xml می رویم. سپس کد زیر را در تگ manifest> اضافه می کنیم.

android:installLocation="auto"

دقت نمایید که همین کار برای فعال شدن Move to Sd Card کافی ست.

طراحی Layout اپلیکیشن

ما در اینجا سعی می کنیم این آموزش را به صورتی پروژه محور انجام داده تا با ارائه مثالی عملی این کار را انجام دهیم.

من یک پروژه در اندروید استودیو ایجاد می کنم و نامش را Sd-Card-Gsm می گذارم.

به سراغ Layout اپلیکیشن (activity_main.xml) می رویم و یک دکمه Button ایجاد می کنیم.

<Button
        android:text="Move to Sd Card"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button"
        android:onClick="AppManager"/>

دقت نمایید که به دکمه Button بالا یک خاصیت onClick اضافه نمودیم که مقدار آن AppManager می گذاریم تا متد آن را بعدا در قسمت جاوای برنامه بنویسیم.

android:onClick="AppManager"/>

کاری که این دکمه Button انجام می دهد اینست که با کلیک بر روی آن، برنامه به اکتیویتی تنظیمات این اپلیکیشن رفته تا عملیات Move to Sd Card را برای آن انجام دهیم.

MainActivity.java

به سراغ برنامه نویسی این پروژه (MainActivity.java) می رویم تا کدهای جاوای آن را بنویسیم.

در این قسمت ، در کلاسMainActivity ، یک متد به نام AppManager ایجاد می کنیم.

کاری که این متد برای ما انجام می دهد اینست که با استفاده از این Intent ، وقتی به روی دکمه Button کلیک نماییم، به قسمت تنظیمات (Settings) این اپلیکیشن می رویم.

این متد به شکل زیر است:

public void AppManager(View view) {
        String packageName = "com.gsm_developers.sd_card_gsm";

        try {
            Intent intent = new  Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setData(Uri.parse("package:" + packageName));
            startActivity(intent);
        }
        catch (ActivityNotFoundException e) {
            Intent intent = new  Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
            startActivity(intent);
        }
    }

 

کدهای بالا را شرح می دهیم:

در قسمت try این متد، یک Intent به نام intent می سازیم که به application details این برنامه دسترسی داشته و وارد آن شویم.

Intent intent = new  Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

ولی در ابتدای این متد، یک متغیر به نام packageName از نوع رشته می سازیم که مقدار آن را برابر نام پکیج این پروژه قرار می دهیم.

String packageName = "com.gsm_developers.sd_card_gsm";

باید نام پکیج این اپلیکیشن وقتی به Sd Card منتقل شود، را به این Intent تخصیص دهیم.

intent.setData(Uri.parse("package:" + packageName));

در قسمت بعدی باید این Intent را با استفاده از کد startActivity شروع (Start) نماییم.

startActivity(intent);

کد کامل MainActivity

package com.gsm_developers.sd_card_gsm;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void AppManager(View view) {
        String packageName = "com.gsm_developers.sd_card_gsm";

        try {
            Intent intent = new  Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setData(Uri.parse("package:" + packageName));
            startActivity(intent);
        }
        catch (ActivityNotFoundException e) {
            Intent intent = new  Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
            startActivity(intent);
        }
    }
}

یادتان باشد که دسترسی این اپلیکیشن را نیز تغییر دهید.

یعنی به سراغ manifests->AndoirdManifest.xml رفته و سپس کد زیر را در تگ manifest> اضافه می کنیم.

android:installLocation="auto"

 کد کامل manifest این اپلیکیشن را در زیر مشاهده می کنید.

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

کار به اتمام رسیده است، پروژه را Run می کنیم.

با زدن دکمه ی Move To Sd Card به بخش Settings این اپلیکیشن می رویم.

مشاهده می کنید که این قسمت برای این اپلیکیشن فعال شده است.

Arash

طراح سایت و برنامه نویس

یک دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا