Android中讓應用程式自動安裝到手機記憶體及判斷應用程式是否安裝在SDCard中

來源:互聯網
上載者:User

標籤: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 
    1. /** 
    2.  * 判斷包名所對應的應用是否安裝在SD卡上 
    3.  * @return, true if install on SD card  
    4.  */  
    5. public static boolean isInstallOnSDCard(String packageName) {  
    6. PackageManager pm = LauncherApplication.getApp().getPackageManager();  
    7. ApplicationInfo appInfo;  
    8. try {  
    9.     appInfo = pm.getApplicationInfo(packageName, 0);  
    10.     if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {  
    11.         return true;  
    12.     }  
    13. } catch (NameNotFoundException e) {  
    14.     e.printStackTrace();  
    15. }  
    16. return false;  
    17. }  

Android中讓應用程式自動安裝到手機記憶體及判斷應用程式是否安裝在SDCard中

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.