Avisos

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


 
Herramientas
  #1  
Viejo 30/04/13, 13:11:06
Avatar de pablogarcia013
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
Mensajes: 148
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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);
de esta manera si tengo 2 imagenes (IMG1 e IMG2) la siguiente se guardaria como IMG3

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!
Responder Con Cita


  #2  
Viejo 01/05/13, 12:57:37
Avatar de rinxe
rinxe rinxe no está en línea
Miembro del foro
Mensajes: 260
 
Fecha de registro: mar 2009
Localización: Teruel
Mensajes: 260
Modelo de smartphone: Xiaomi Mi5S
Versión de ROM: LineageOS 14.1
Versión de Radio: Los 40
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
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.
Responder Con Cita
  #3  
Viejo 03/05/13, 10:43:53
Avatar de pablogarcia013
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
Mensajes: 148
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #4  
Viejo 03/05/13, 12:10:03
Avatar de rinxe
rinxe rinxe no está en línea
Miembro del foro
Mensajes: 260
 
Fecha de registro: mar 2009
Localización: Teruel
Mensajes: 260
Modelo de smartphone: Xiaomi Mi5S
Versión de ROM: LineageOS 14.1
Versión de Radio: Los 40
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #5  
Viejo 03/05/13, 12:23:11
Avatar de pablogarcia013
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
Mensajes: 148
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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();
	    }
Responder Con Cita
  #6  
Viejo 03/05/13, 15:45:50
Avatar de rinxe
rinxe rinxe no está en línea
Miembro del foro
Mensajes: 260
 
Fecha de registro: mar 2009
Localización: Teruel
Mensajes: 260
Modelo de smartphone: Xiaomi Mi5S
Versión de ROM: LineageOS 14.1
Versión de Radio: Los 40
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:08:25 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007