![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
mkdirs() y list()
buenas! tengo un problemilla con estas 2 instrucciones.
Estoy probando en 2 moviles : Galaxy S2 sin rootear y un Galaxy S1 rooteado. (no creo que el modelo de movil influya) Quiero guardar unas imagenes desde codigo en una carpeta que la llamo por ejemplo: "directorio" Lo que hago es intentar acceder a este directorio y si no existe lo crea despues recorro el directorio para ver cuantas imagenes hay ya creadas para asignarle un nombre diferente: pongo codigo: Código:
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/media/directorio");
if(!dir.exists())
dir.mkdirs();
String[] lista = dir.list();
int numfinal=0;
for(int i=0;i<lista.length;i++){
String cadena = lista[i];
String sub = cadena.substring(9,cadena.length()-4);
int num = Integer.parseInt(sub);
if(num>numfinal)numfinal=num;
}
numfinal++;
String strfinal = String.valueOf(numfinal);
strfinal = "IMG"+strfinal;
GuardarImagen(strfinal);
hasta aqui en el galaxy s2 funciona genial y lo hace perfecto pero en el galaxy s1 rooteado da un null exception, debugueando llego a que String[] lista = dir.list(); no lo hace bien, es decir lista == null; entonces al intentar acceder a ella da esa excepcion. En el manifest tengo <uses-permission android:name="android.permission.WRITE_EXTERNAL_ST ORAGE"/> tambien probe en una nexus 7 y si funciona. ¿Alguien sabe que puede estar pasando? Muchas gracias!!! Otra vez! |
|
|
|
#2
|
|
Es raro lo que comentas ya que funciona en 2 dispositivos y en el S1 no. Lo unico que se me ocurre es que compruebes el almacenamiento externo antes de hacer esos pasos.
En mi blog tienes un ejemplo de opciones de almacenamiento y explico un poco el tema por si le quieres hechar un ojo. |
|
#3
|
||||
|
||||
|
Siguiendo tu blog me di cuenta de que en vez de "mounted" pone "removed" cuando hago Environment.MEDIA_MOUNTED.equals(state) sabes por que pasa esto? o si se puede soluccionar?
Muchas gracias |
|
#4
|
|
Cuando esta en el estado "removed" quiere decir que no esta presente o no se detecta el almacenamiento masivo.
El fallo esta claro que viene del S1, comprueba que al ejecutar la aplicacion tengas acceso desde el S1 al almacenamiento masivo. Puede ser que tengas una rom personalizada y te este dando problemas, eso ya lo tendras que investigar tu |
|
#5
|
||||
|
||||
|
Muchas gracias! yo tambien pense que seria del s1...puesto que si funciona en los demas...he puesto este codigo para avisar a los usuarios de que tienen que activarlo.
Código:
if (Environment.MEDIA_REMOVED.equals(state)) {
Toast.makeText(this,"Tienes el almacenamiento masivo desactivado, no puedes guardar la imagen, activalo!", Toast.LENGTH_SHORT).show();
}
|
|
#6
|
|
Es una opcion sii, ya has visto los diferentes tipos de comprobar el almacenamiento masivo. Ya es cuestion de elegir que hacer en cada caso.
Normalmente se pierde o no esta presente el almacenamiento masivo cuando conectas el movil al pc |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 23:08:25 (GMT +1)
HTCMania: líderes desde el 2007





