你我都是Android專家

device1.png   

一個程式開發成這樣感覺起來也很偉大吧,所謂的APP2SD

一點都不難

這是 Android 2.2 的特色,只要在開發程式時給一個設定值

Android 2.2的系統會自動跳出這個視窗,詢問使用者是否將程式裝在記憶卡上

節省手機上有限的空間

至於如何做搬移,這就是Android系統自己會去調配的事情

它不會全部將程式裝在記憶卡上,而會搬移大部分的資料到記憶卡上

只會留下必要的程式在手機的儲存空間

也就是大家所謂的APP2SD

 

大部分的討論串大多是在如何強制讓系統直接搬移程式

在這裡教你如何在程式開發的角度上,把這項功能也考量進去

 

對於遊戲....等大容量的程式,Android官方是比較推薦上述類型的程式裝在記憶卡上

 

---------------------------------------------------------------

 

開發需求

只要一個最低需求

Android 2.2 (API Level:8)

做為最低開發的目標程式標準

(當然手機也要隨著配合啦....)

 

---------------------------------------------------------------

AndroidManifest.xml 中,在<manifest> </manifest>的標籤上

加入一個android:installLocation的參數,本例為"auto"

如以下所示:

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

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

      package="com.J_Test.TestProject"

      android:versionCode="1"

      android:versionName="1.0"

      android:installLocation="auto">

    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".main"

                  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>

---------------------------------------------------------------

關於installLocation

關鍵的參數android:installLocation

有三種參數能使用

internalOnly  就是只能限制於在主記憶體中運作

auto 就是自動判斷

preferExternal  是希望能裝在記憶卡中(例如:遊戲....)

不是所有程式都使用auto讓程式判斷就好

 

 

Android官方也提到

有些類型的程式不應該使用APP2SD的

因為把資料裝在記憶卡需考量到

記憶卡如果無緣無故被退出,程式很有可能會當掉(crash)

當然,沒有該有安裝程式的那張記憶卡,程式不會在Android系統中出現icon

 

 

 

 

Services  程式有寫到服務,需要在系統中常駐運行的

Alarm Services 有使用定時提醒的服務,記憶卡退出代表無法正常提醒使用者

Input Method Engines  你開發的程式是做為輸入法的程式

Live Wallpapers 你開發的程式是做為定時換桌布的類型的

Live Folders  放在Android桌面上的動態文件夾,記憶卡被卸載時,該資料夾會暫時消失

App Widgets   你開發的程式是有提供桌面的插件的

Account Managers   程式有使用到Account Manager這個class元件的

Sync Adapters  程式有使用到AbstractThreadedSyncAdapter這個class元件的

Device Administrators  程式有使用到DeviceAdminReceiver這個元件的,做為系統管理類型的

Broadcast Receivers listening for "boot completed"  你的程式會隨著系統開機而會自動執行的,系統剛開機時

 

 

在是否搬移頁面的提示框按下是,出現該程式的詳細資訊

device2.png

按下移至USB儲存裝置

device3.png

就把資料移到記憶卡裡了,就成功了

 device4.png

官方網站說明

http://developer.android.com/guide/topics/manifest/manifest-element.html#install
 
http://developer.android.com/guide/appendix/install-location.html

參考資料

http://www.pin5i.com/showtopic-android-2.2-apk-installlocation.html

創作者介紹

清新下午茶

Johnny 鋼鍊 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 旻
  • 請問有把辦法把Android 2.1升級到2.2嗎?
找更多相關文章與討論