Save photo in directory

1

Clicking on an Item of my ListView opens the camera, but when I take the photo it does not save it in the directory that I am creating.

The directory that I am creating does not exist at the moment I save it, what am I doing wrong?

public class ListaConImag extends AppCompatActivity {

miAdaptador adaptador;
ArrayList<ContenidoVista> datos;
android.widget.ListView lista;
String ANDROID_DATA = "Android/data";
String dirCarpetaImg;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista_con_imag);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    lista = (android.widget.ListView) findViewById(R.id.Lista_imag);
    datos = new ArrayList<ContenidoVista>();
    rellenardatos();
    adaptador = new miAdaptador(this, datos);
    lista.setAdapter(adaptador);


    lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Animation rotar = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.girar);
            Animation zoom = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom);
            Animation trasparencia = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.trasparencia);
            Animation mover = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.mover);
            switch (position){

                case(0):
                    view.findViewById(R.id.icono).startAnimation(rotar);
                    Intent IntCamara = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    dirCarpetaImg = Environment.getExternalStorageDirectory()+ ANDROID_DATA+"/com.appjor/";
                    File carpetaImagen = new File(dirCarpetaImg);
                    if(!carpetaImagen.exists()){ //Existe el directorio?
                        carpetaImagen.mkdirs(); // si no existe, lo crea.
                    }
                    File imagenApp = new File(carpetaImagen,"foto.jpg");
                    Uri dirImagen = Uri.fromFile(imagenApp);
                    IntCamara.putExtra(MediaStore.EXTRA_OUTPUT, dirImagen);
                    startActivityForResult(IntCamara, 1);


                break;

                case(1):

                    break;

                case(2):
                    view.findViewById(R.id.icono).startAnimation(trasparencia);
                    break;

                case(3):
                    view.findViewById(R.id.icono).startAnimation(mover);
                    break;
            }
        }


    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);


    if(requestCode == 1 && resultCode == RESULT_OK){

      }

    }


private void rellenardatos() {

    datos.add(new ContenidoVista("CAMARA", "Iniciar camara", R.drawable.perro));
    datos.add(new ContenidoVista("INFORMACION", "Mostar informacion", R.drawable.perro1));
    datos.add(new ContenidoVista("Titulo3", "SubTitulo3", R.drawable.perro2));
    datos.add(new ContenidoVista("Titulo4", "SubTitulo4", R.drawable.persona));
     }

  }
    
asked by Jorge Gonzalez 07.04.2016 в 16:45
source

2 answers

2

The problem is that the /imagenesApp directory does not exist,

 Bitmap bMap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+
                                                   "/imagenesApp/"+"foto.jpg");

what is done regularly is to validate, if it does not exist it is created.

String ANDROID_DATA = "/Android/data/";
String externalDir = Environment.getExternalStorageDirectory() +  ANDROID_DATA + "/imagenesApp/";

        File carpetaImgen = new File(externalDir);
                if(!carpetaImgen.exists()){ //Existe el directorio?
                    carpetaImgen.mkdirs(); // si no existe, lo crea.            
                }
    
answered by 07.04.2016 / 16:56
source
0

I think you might have problems with the AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
    
answered by 19.04.2016 в 17:48