2011年7月24日 星期日

設定將應用程式安裝到記憶卡 - Android 新手學習筆記

由於手機的 ROM 通常不會比 SDCard 的容量大,也不能擴充,所以對手機用戶而言,最好是能將應用程式安裝到 SDCard 上

在 API Level 8 (Android 2.2) 以後,就可以設定應用程式預設安裝到 SDCard 上
只要在 AndroidManifest.xml 檔案中的 <manifest> 標籤上,加上 android:installLocation="preferExternal" 屬性就可以了
例如


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

這樣子設定,即是在設定預設安裝的記憶卡上,但不代表一定會安裝在記憶卡上
例如記憶卡的空間不夠了,而手機的 ROM 空間還足夠,此時就會安裝在 ROM 上

如果在加上這個屬性後出現了紅色叉叉及這個錯誤訊息
error: No resource identifier found for attribute 'installLocation' in package 'android'
那就是應用程式專案的設定需要調整

開啟專案的 Properties ,選 Android,將 Project Build Target 改選 API Level 8 以上的選項

若沒有 API Level 8 以上的選項,那就要在 Android SDK And AVD Manager 中,再安裝適當的版本

但是,如果你的應用程式想要支援更低版本的 Android
也就是讓更低版本的 Android 手機用戶也能使用你的應用程式
那 Project Build Target 還是必須要選 API Level 8 以上的選項
然後在 <manifest> 標籤內,加上 <uses-sdk android:minSdkVersion="API Level 版本" /> 就可以了
這裡的"API Level 版本"就是你想要支援的最低版本
例如

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

利用這個方式,API Level 8 以下的手機用戶也就能安裝你的應用程式了
但要注意的是,你的應用程式必須真的沒有用到比你指定的版本還高的 API 才行
否則在執行時就會出錯了
由於 Project Build Target 選擇的版本較高,Eclipse 無法幫你確認是否有用到高版本 API
故就要自己留意
要不然,就是在開發時 Project Build Target 先選擇實際想支援的最低版本
等要發佈時,再調整 Project Build Target  及 android:installLocation="preferExternal" 屬性

另外,並不是任何的應用程式都適合安裝到 SDCard 上
因為當手機用做USB磁碟機,或是卸載或移除 SDCard 時
就會自動關掉安裝在 SDCard 上且正在執行的應用程式
對於某些類型的應用程式而言,這並不是它所希望的結果
所以如果你的應用程式是屬於下面這些類型,那就不建議安裝到記憶卡上

Services

Alarm Services
Input Method Engines
Live Wallpapers
Live Folders
App Widgets
Account Managers
Sync Adapters
Device Administrators
Broadcast Receivers listening for "boot completed"
Copy Protection

沒有留言:

張貼留言

廣告訊息會被我刪除

Related Posts with Thumbnails