Escribir en la tarjeta SD

Estoy escribiendo algunos archivos a la tarjeta SD. Mi versión de Android es 2.1. No estoy estableciendo ningún permiso en el archivo de manifiesto, pero me permite escribir en la tarjeta sd.

Por favor, hágamelo saber por qué este comportamiento. Sólo WRITE_EXTERNAL_STORAGE en los controles de manifiesto escribir en la tarjeta SD o cualquier otra configuración que tengo que hacer.

Gracias Gururaja BO

¿Está compilando con API de nivel 3 o menos? Ese permiso se agregó en el nivel 4 de API (Android 1.6), por lo que todas las aplicaciones compiladas con el nivel 3 de la API (para la compatibilidad con los teléfonos que siguen ejecutando 1.5) tendrán ese permiso automáticamente.

He creado un método de los utils para comprobar una tarjeta del SD está disponible en el dispositivo o no, y conseguir la trayectoria de la tarjeta del SD en el dispositivo si está disponible.

Usted puede copiar 2 métodos abajo en la clase de su proyecto que usted necesita. Cree la carpeta de su proyecto en la ruta de acceso devuelta y escriba datos en ella. Eso es todo.

public String isRemovableSDCardAvailable() { final String FLAG = "mnt"; final String SECONDARY_STORAGE = System.getenv("SECONDARY_STORAGE"); final String EXTERNAL_STORAGE_DOCOMO = System.getenv("EXTERNAL_STORAGE_DOCOMO"); final String EXTERNAL_SDCARD_STORAGE = System.getenv("EXTERNAL_SDCARD_STORAGE"); final String EXTERNAL_SD_STORAGE = System.getenv("EXTERNAL_SD_STORAGE"); final String EXTERNAL_STORAGE = System.getenv("EXTERNAL_STORAGE"); Map<Integer, String> listEnvironmentVariableStoreSDCardRootDirectory = new HashMap<Integer, String>(); listEnvironmentVariableStoreSDCardRootDirectory.put(0, SECONDARY_STORAGE); listEnvironmentVariableStoreSDCardRootDirectory.put(1, EXTERNAL_STORAGE_DOCOMO); listEnvironmentVariableStoreSDCardRootDirectory.put(2, EXTERNAL_SDCARD_STORAGE); listEnvironmentVariableStoreSDCardRootDirectory.put(3, EXTERNAL_SD_STORAGE); listEnvironmentVariableStoreSDCardRootDirectory.put(4, EXTERNAL_STORAGE); File externalStorageList[] = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { externalStorageList = getContext().getExternalFilesDirs(null); } String directory = null; int size = listEnvironmentVariableStoreSDCardRootDirectory.size(); for (int i = 0; i < size; i++) { if (externalStorageList != null && externalStorageList.length > 1 && externalStorageList[1] != null) directory = externalStorageList[1].getAbsolutePath(); else directory = listEnvironmentVariableStoreSDCardRootDirectory.get(i); directory = canCreateFile(directory); if (directory != null && directory.length() != 0) { if (i == size - 1) { if (directory.contains(FLAG)) { Log.e(getClass().getSimpleName(), "SD Card's directory: " + directory); return directory; } else { return null; } } Log.e(getClass().getSimpleName(), "SD Card's directory: " + directory); return directory; } } return null; } /** * Check if can create file on given directory. Use this enclose with method * {@link BeginScreenFragement#isRemovableSDCardAvailable()} to check sd * card is available on device or not. * * @param directory * @return */ public String canCreateFile(String directory) { final String FILE_DIR = directory + File.separator + "hoang.txt"; File tempFlie = null; try { tempFlie = new File(FILE_DIR); FileOutputStream fos = new FileOutputStream(tempFlie); fos.write(new byte[1024]); fos.flush(); fos.close(); Log.e(getClass().getSimpleName(), "Can write file on this directory: " + FILE_DIR); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Write file error: " + e.getMessage()); return null; } finally { if (tempFlie != null && tempFlie.exists() && tempFlie.isFile()) { // tempFlie.delete(); tempFlie = null; } } return directory; } 
  • Configuración de Android en meta-datos o en el archivo de propiedades?
  • ¿Cómo tratar con "$ {applicationid}" en Xamarin?
  • El host de destino no debe ser nulo o configurado en parámetros
  • Error: No se encontró ningún recurso que coincida con el nombre dado (en 'theme' con el valor '@ style / AppTheme')
  • Especificación de la memoria RAM del Android Market en el manifiesto
  • Activa la aceleración de hardware si está disponible (como Android 3+) con Android APK 2.2
  • Manifiesto de Android: filtro y actividad de intenciones
  • ¿Dónde está en AOSP el código para analizar AndroidManifest.xml?
  • AutoStart La aplicación no funciona correctamente
  • ¿Cómo especificar qué actividad se inicia al iniciar la aplicación?
  • Android TV no inicia actividad correcta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.