안드로이드 메니페스트 파일에 설치 가능한 위치를 지정하는 installLocation 속성을 추가했다.

 

속성

설명

internalOnly

내부 메모리에만 설치 할 수 있고 외부 메모리에는 설치 할 수 없다.

preferExternal

가급적이면 외부 메모리에 설치한다. 외부 메모리가 부족하거나 없으면 내부 메모리에 설치한다.

auto

내부 메모리가 부족하면 외부 메모리에 설치한다.

 

 

다음 예제를 통해 preferExternal 옵션을 줘서 실제로 외부 메모리에 설치가 되었는지 확인해보자

 

MainActivity.java

 

package com.example.ch18_external;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.widget.Toast;

 

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

 

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle action bar item clicks here. The action bar will

        // automatically handle clicks on the Home/Up button, so long

        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        if (id == R.id.action_settings) {

            return true;

        }

        return super.onOptionsItemSelected(item);

    }

 

    public boolean onTouchEvent(MotionEvent event){

        super.onTouchEvent(event);

        if(event.getAction() == MotionEvent.ACTION_DOWN){

            Toast.makeText(this, "Touch Event Received", Toast.LENGTH_SHORT).show();

            return true;

        }

        return false;

    }

}

 

 

AndroidMenifest.xml 파일

 

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.ch18_external"

android:versionCode="1"

android:versionName="1.0"

android:installLocation="preferExternal"

>

 

<uses-sdk

android:minSdkVersion="19"

android:targetSdkVersion="19" />

 

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

 

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

 

</manifest>

 

실행 화면

 

 

다음과 같이 MoveToSDCard가 떴다.. 원래 MoveToPhone이 떠야 되는데.

 

 

 

이유는 SD카드 용량이 별로 없어서 그런 것 같다.

아무래도 내 스마트폰에 외장 메모리를 장착하고 다시 테스트 해야겠다.

 

블로그 이미지

가카리

소프트웨어와 하드웨어 프로그래밍, 취업 및 직장생활 전문 블로그