Issue to write SD card

288 Views Asked by At

I would appreciate some help with an issue that I have with a code in Java with Android Studio. This work perfectly in Eclipse, but not with Android.

This apk consists of saving data from a form to a txt file.

I can't see any error while debugging, but no folder or file is created by this apk.

These are the permissions given to the apk.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

In the main activity, I put the requests to those permissions

int permissionCheck = ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE); 

if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 

Log.i("Message", "Don't have permission to write in SD card.");

ActivityCompat.requestPermissions(this, new String[ {

Manifest.permission.WRITE_EXTERNAL_STORAGE}, 225); 

} else { 

Log.i("Message", "You have access!"); }

This is the OnCreate method which works fine:

private String nombreArchivo = "control.txt";
private String nombreCarpeta = "OfflineGestion";

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_control);

        File tarjeta_sd = Environment.getExternalStorageDirectory();
        f_carpeta = new File(tarjeta_sd.getAbsolutePath(),nombreCarpeta);
        //f = new File()
        if (!f_carpeta.exists()) {
            f_carpeta.mkdirs();
        }

        String pathArchivo = Environment.getExternalStorageDirectory() + File.separator + nombreCarpeta + File.separator + nombreArchivo;
        //Si el archivo no existe, crear archivo con contenido básico


        f_archivo = new File(pathArchivo);
        if (!f_archivo.exists()) {
            crearArchivo(f_archivo);
        }

        sptitulo = (Spinner) findViewById(R.id.sptitulo);
        //Creating the ArrayAdapter instance having the list
        ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item,tituloSpinner);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //Setting the ArrayAdapter data on the Spinner
        sptitulo.setAdapter(aa);


        edEntidad = (EditText) findViewById(R.id.entidad);
        edCantidad = findViewById(R.id.cantidad);
        initDatePicker();
        dateButton = findViewById(R.id.fecha);
        dateButton.setText(getTodayDate());
        edDescripcion = findViewById(R.id.edDescripcion);

        rbGasto = findViewById(R.id.rbGasto);
        rbIngreso = findViewById(R.id.rbIngreso);
        chExtra = findViewById(R.id.chExtra);
        chExtraEspecial = findViewById(R.id.chExtraEspecial);


    }

This is the method to create a file. When debugging and the pointer arrives this sentence

fr = new FileWriter(fileSt);

Pointer moves to IOException

Toast.makeText(this,"No se pudo guardar",Toast.LENGTH_SHORT).show();
            e.printStackTrace();
 private void crearArchivo(File f) {

        FileWriter fr = null;
        PrintWriter pw = null;
        String fileSt = f.toString();
        try {

            fr = new FileWriter(fileSt);
            pw = new PrintWriter(fr);

            pw.println("insert into movimientos ('titulo','entidad','cantidad','fecha','operacion','descripcion') values");


            //fr.flush();

            Toast.makeText(this,"Guardado correctamente",Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(this,"No se pudo guardar",Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        } finally {
             try {
                 if (null != fr) {
                     fr.close();
                 }
             } catch (Exception e2) {
                e2.printStackTrace();
             }

        }
    }
0

There are 0 best solutions below