アプリをSDカードにインストールできるようにする
|先日発表されたAndroid 2.2、通称「Froyo」ではアプリケーションをSDカードにも
インストールできるようになりました。
このおかげでAndroid端末の内蔵メモリの容量を気にせずに、
好きなだけアプリをインストールできるわけです!
というわけで早速どのように実現するのか実際に試してみました。
まずはFroyo上で自作アプリをインストールし、アプリケーション情報を見てみます。
「SDカードに移動」というボタンがありますが、押せないようになっています。
これを押せるようにしてみます。
SDカードへの移動を許可するにはManifest.xmlを編集します。
コードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version= "1.0" encoding= "utf-8" ?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" package = "org.example.graphics" android:versionCode= "1" android:installLocation= "preferExternal" android:versionName= "1.0" > <application android:icon= "@drawable/icon" android:label= "@string/app_name" > <activity android:name= ".AndroidGraphics" 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> |
ポイントは
1 | android:installLocation= "preferExternal" |
という一行です。
android:installLocationでインストール先の指定ができます。
選択できる値としては以下のようなものがあります。
- internalOnly : 内蔵メモリへのインストールのみ許可します。
- auto : 内蔵メモリ優先でインストールします。しかし内蔵メモリの容量が一杯だった場合はSDカードへ保存されます。
- preferExternal : SDカードを優先してインストールしますが、SDカードの容量が一杯だった場合は内蔵メモリへインストールされます。
今回のサンプルでは「preferExternal」を選択しているので、
SDカードにインストールされるはずです。
ではこのサンプルをエミュレータ上にインストールしてみます。
先ほどのボタンが押せるようになってます。
また、表示が「携帯端末に移動」になってますので、
このアプリがSDカードにインストールされていることがわかります。
このような手順でアプリのインストール先を制御することができますが、
サービスやインプットメソッドエンジンなど、システムに常駐するようなアプリを
SDカードにインストールしてしまうと、SDカードが利用できないシチュエーション
(物理的に外されてるorSDカードがアンマウント状態)では使えなくなってしまいます。
アプリケーションの種類によってandroid:installLocationの指定を考えるようにして下さい。
3 Comments