Home Menu

Menu



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 29/07/15, 18:10:52
Avatar de javiviplz
javiviplz javiviplz no está en línea
Usuario poco activo
Mensajes: 9
 
Fecha de registro: jul 2015
Localización: Madrid
Mensajes: 9
Modelo de smartphone: Huawei
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Almacenamiento archivo txt en la sd

Hola, estoy aprendiendo lo basico de de programar en android y tengo el siguiente problema.
el programa lo que hace es crear un archivo txt en la sd y guarda los datos que le pases por un EditText.
El problema es que siempre me salta la excepcion IOException.
(he habilitado los permisos de escritura en la sd).

Codigo:

Código:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	EditText et1;
	EditText et2;

 @override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		et1 = (EditText) findViewById(R.id.editText1);
		et2 = (EditText) findViewById(R.id.editText2);
	}


	public void grabar(View v) {
		String nomarchivo = et1.getText().toString();
		String contenido = et2.getText().toString();
		System.out.println("entra en try");
		File tarjeta = Environment.getExternalStorageDirectory();
		File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
		try {
			OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file));
			osw.write(contenido);
			osw.flush();
			osw.close();
			Toast.makeText(this, "Los datos fueron grabados correctamente", Toast.LENGTH_SHORT).show();
			et1.setText("");
			et2.setText("");
		} catch (IOException ioe) {
			System.out.println("error");
		}
	}

	public void recuperar(View v) {
		String nomarchivo = et1.getText().toString();
		File tarjeta = Environment.getExternalStorageDirectory();
		File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
		try {
			FileInputStream fIn = new FileInputStream(file);
			InputStreamReader archivo = new InputStreamReader(fIn);
			BufferedReader br = new BufferedReader(archivo);
			String linea = br.readLine();
			String todo = "";
			while (linea != null) {
				todo = todo + linea + "\n";
				linea = br.readLine();
			}
			br.close();
			archivo.close();
			et2.setText(todo);

		} catch (IOException e) {
			System.out.println("error");
		}
	}

}

Última edición por Dexafree Día 30/07/15 a las 11:32:35
Responder Con Cita


  #2  
Viejo 30/07/15, 11:26:50
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
Buenas!

Lo primero, te edito el código y te lo pongo entre etiquetas [ CODE]
Si tienes que pegar código en el foro, simplemente escribe


[code]
Tu codigo
[/code]


Y aparecerá en un cajetín que respeta la indentación

Sobre lo que comentas, asegúrate de que en el Manifest has añadido el permiso correspondiente:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_ST ORAGE" />

PD: Tambien puedes usar un FileOutputStream y escribir los bytes del String, asi a ojo como idea

Además, si puedes pegar el contenido de la excepción, sería de ayuda para intentar determinar mejor el problema

Última edición por Dexafree Día 30/07/15 a las 11:37:20
Responder Con Cita
  #3  
Viejo 30/07/15, 15:31:58
Avatar de javiviplz
javiviplz javiviplz no está en línea
Usuario poco activo
Mensajes: 9
 
Fecha de registro: jul 2015
Localización: Madrid
Mensajes: 9
Modelo de smartphone: Huawei
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Muchas gracias,
El problema no estaba en el código sino en que el AVDmanager de AndroidStudio no me esta emulando la tarjeta SD.
Corriendo el programa en el dispositivo movil funciona correctamente.
Responder Con Cita
  #4  
Viejo 30/07/15, 16:47:02
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
Marcamos como solucionado entonces
Responder Con Cita
Respuesta

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

Herramientas

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: 12:28:14 (GMT +1)

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