2012-01-03 18 views
8

¿Hay alguna manera de detectar si el apk está almacenado en la tarjeta SD o no? ¿Cómo?¿Hay alguna manera de detectar si el apk está almacenado en la tarjeta SD o no?

+0

+1 para la pregunta. pero ¿te hace falta si la aplicación está instalada en una tarjeta SD o teléfono? –

+0

No, necesito detectar si la aplicación está instalada o no (solo en la tarjeta SD) – user1074896

+0

Esta pregunta es un duplicado de: http://stackoverflow.com/questions/4004650/android-2-2-how-do- i-detect-if-i-am-installed-on-the-sdcard-or-not excepto en la medida en que la última respuesta se refiere solo al nivel de API 8 y superior. La página vinculada sugiere usar el indicador FLAG_EXTERNAL_STORAGE, que es para el propósito específico deseado. Esta bandera estuvo disponible en API nivel 8. – Carl

Respuesta

0

Sí ... Puede detectar la misma ...

Las aplicaciones descargadas desde Android Market se almacenan en /data/app (no en la tarjeta SD). Las aplicaciones del sistema por defecto se almacenan en /system/app

Sin embargo, teléfonos libres pueden almacenar las aplicaciones en /sdcard/backups/aplicaciones

+1

y ¿cómo puedes detectar eso? –

+0

Hay un indicador un tanto reciente que las aplicaciones pueden establecer en su manifiesto si prefieren instalarse en la tarjeta SD ... – Anders

+0

Todas las aplicaciones del mercado se instalan en la memoria del teléfono de manera predeterminada. No hay forma de moverlo a la tarjeta SD sin rootear el dispositivo. ** Apps2SD ** ayuda a mover las aplicaciones de la memoria interna a la tarjeta SD solo en dispositivos rooteados. Y como se mencionó anteriormente, getApplicationInfo(). SourceDir se puede usar para detectar la ubicación. – Anil

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

Para que la respuesta aceptada sea más concreta, he aquí un ejemplo de cómo nos hemos visto ed en el contexto de acceder a los archivos escritos interno vs almacenamiento externo, de acuerdo con las directrices API level 7 o inferiores:

{ //... 
    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); 
} 
Cuestiones relacionadas