標籤:target 斷包 tor except manage get launch mod http
上次寫了個widget程式,安裝好後準備把它添加到手機首頁上,發現視窗小組件中找不到我剛剛安裝的那個widget,網上查資料才發現系統視窗小組件只能先載入掃描安裝在記憶體的應用程式,把屬於widget的APP顯示到小組件列表上。
對於開發人員來說,怎樣才能讓應用程式自動安裝到手機記憶體中去呢?
在 Android2.2版本及之後,AndoridManifest.xml 中有一個屬性: Android:installLocation ,可以通過設定這個屬性的三個值 "auto" | "internalOnly" | "preferExternal",來決定將應用程式安裝到哪裡。
auto:
程式可能安裝到外部儲存介質上(例如,SDCard),但是預設會被安裝到手機記憶體中,當手機記憶體為空白時,程式將被安裝到外部儲存介質上。當程式安裝在手機上後,使用者可以在外部儲存介質和手機記憶體上自行移動。
internalOnly(預設值):
當設定了該值後,程式只能安裝在記憶體中,當手機記憶體為空白時,安裝不成功。
preferExternal:
將程式安裝在外部儲存介質上,但系統不保證程式一定會安裝到外部儲存介質上,當外部儲存介質不可以或為空白時,程式將被安裝到記憶體中。若程式使用了forward-locking機制時也將被安裝到記憶體中,因為外部儲存不支援這種機制。程式安裝後,使用者同樣可以在外部儲存介質和記憶體之間自由移動。
當我們想知道應用程式是否安裝在SDCard中時,可用如下語句判斷:
[java] view plain copy
- /**
- * 判斷包名所對應的應用是否安裝在SD卡上
- * @return, true if install on SD card
- */
- public static boolean isInstallOnSDCard(String packageName) {
- PackageManager pm = LauncherApplication.getApp().getPackageManager();
- ApplicationInfo appInfo;
- try {
- appInfo = pm.getApplicationInfo(packageName, 0);
- if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
- return true;
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- return false;
- }
Android中讓應用程式自動安裝到手機記憶體及判斷應用程式是否安裝在SDCard中