2012-01-03 172 views
8

有沒有辦法檢測apk是否存儲在SD卡上? 如何?有沒有辦法檢測apk是否存儲在SD卡上?

+0

對於問題的+1。但不知道你是否需要無論應用程序安裝在SD卡還是手機? – 2012-01-03 12:32:23

+0

不,我需要檢測應用程序是否安裝(僅在SD卡上) – user1074896 2012-01-03 14:58:20

+0

此問題是重複的:http://stackoverflow.com/questions/4004650/android-2-2-how-do- i-detect-if-i-am-installed-on-the-sdcard-or-not 除了後面的答案僅適用於API等級8以上。鏈接的頁面建議使用FLAG_EXTERNAL_STORAGE標誌,該標誌用於所需的特定目的。此標誌在API級別8中可用。 – Carl 2012-12-28 07:35:32

回答

0

是...你可以檢測同...

從Android Market下載的應用程序存儲在/data/app中(不是SD卡)。 默認的系統應用程序存儲在/系統/應用

然而,根深蒂固的手機可以在應用商店中/SD卡/備份/應用

+1

以及如何檢測該標誌? – 2012-01-03 12:35:59

+0

如果他們喜歡安裝在SD卡上,應用程序可以在他們的清單中設置一些近期標誌... – Anders 2012-01-03 14:02:49

+0

默認情況下,市場上的每個應用程序都安裝在手機內存中。沒有根源設備將其移動到SD卡是沒有辦法的。 ** Apps2SD **只能幫助將應用程序從內部存儲器移動到位於固定設備上的SD卡。如上所述,getApplicationInfo()。sourceDir可用於檢測位置。 – Anil 2012-01-03 18:01:11

0
 File f = new file(Environment.getExternalStorageDirectory()+"your apk name"); 
    sytem,out.println(""+f.exsits); 
1

爲了使接受的答案更具體,下面是我如何使用我們的例子根據API level 7準則或更低準則訪問寫入到內部vs外部存儲器的文件的上下文中編輯它:

{ //... 
    mInternalApp = context.getApplicationInfo().sourceDir.matches("^/data/app/.*"); 
    mPathInternal = context.getApplicationInfo().dataDir + "/files/"; 
    mPathExternal = Environment.getExternalStorageDirectory() + "/Android/data/" 
       + PACKAGE_NAME + "/files/"; 
} 

private File getMyFile() { 
    return (mInternalApp) ? new File(mPathInternal + INT_FILE_NAME) : 
          new File(mPathExternal + EXT_FILE_NAME); 
} 
相關問題