2012-01-03 1 views
8

Есть ли способ определить, хранится ли apk на SD-карте или нет? Как?Есть ли способ определить, хранится ли apk на SD-карте или нет?

+0

+1 к вопросу. но интересно, у вас есть необходимость. Установлено ли приложение в SD-карте или телефоне? –

+0

Нет, мне нужно определить, установлено ли приложение или нет (только на SD-карте) – user1074896

+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

ответ

0

Да ... Вы можете обнаружить то же самое ...

Приложения, загруженные из Android Market хранятся в /данных/приложений (не в SD-карты). системы по умолчанию приложения В сохраняются в /системы/приложения

Однако укоренившиеся телефоны могут хранить приложения в /SDCARD/резервных копий/приложений

+1

и как вы можете это обнаружить? –

+0

Есть несколько недавних приложений с флагом, которые можно установить в их манифесте, если они предпочитают устанавливать на SD-карту ... – Anders

+0

Каждое приложение с рынка устанавливается по умолчанию в память телефона. Невозможно переместить его на SD-карту, не укореняя устройство. ** Apps2SD ** позволяет переносить приложения из внутренней памяти на SD-карту только на корневых устройствах. И, как упоминалось выше, getApplicationInfo(). SourceDir может использоваться для обнаружения местоположения. – Anil

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

Чтобы сделать принятый ответ более конкретным, приведем пример того, как у меня есть ред его в контексте доступа к файлам, записанным на внутренний против внешнего хранения, в соответствии с API level 7 руководящих принципов или ниже:

{ //... 
    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); 
} 
Смежные вопросы