Skip to content

Instantly share code, notes, and snippets.

@MacoChave
Created September 13, 2018 05:00
Show Gist options
  • Save MacoChave/f3c9b727a90d2e1fa5b8ff43465fc6bf to your computer and use it in GitHub Desktop.
Save MacoChave/f3c9b727a90d2e1fa5b8ff43465fc6bf to your computer and use it in GitHub Desktop.
File Chooser

Item.java es el TAO para el item de la lista... tiene la ruta, el nombre y la imagen ThirdActivity.java es la actividad donde se encuentra el filechooser de imagenes SecondActivity.java se mueven las imagenes a una carpeta predefinida MainActivity.java es a que maneja todo

package com.macochave.filechooser;
/**
* Created by marco on 25/09/17.
*/
public class Item
{
private int imagenes;
private String pathImage;
private String titulo, subTitulo;
public Item() {
}
public Item(int imagenes, String pathImage, String titulo, String subTitulo) {
this.imagenes = imagenes;
this.pathImage = pathImage;
this.titulo = titulo;
this.subTitulo = subTitulo;
}
public int getImagenes() {
return imagenes;
}
public void setImagenes(int imagenes) {
this.imagenes = imagenes;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getSubTitulo() {
return subTitulo;
}
public String getPathImage() {
return pathImage;
}
public void setPathImage(String pathImage) {
this.pathImage = pathImage;
}
}
package com.macochave.filechooser;
import android.content.Context;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by marco on 25/09/17.
*/
public class ListViewAdapter extends BaseAdapter {
private ArrayList<Item> items;
private Context context;
private LayoutInflater inflater;
public ListViewAdapter() {
}
public ListViewAdapter(ArrayList<Item> items, Context context) {
this.items = items;
this.context = context;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vistaItem = inflater.inflate(R.layout.layout_item, viewGroup, false);
ImageView imagen = vistaItem.findViewById(R.id.vwImage);
TextView titulo = vistaItem.findViewById(R.id.txtTitulo);
TextView subTitulo = vistaItem.findViewById(R.id.txtSubTitulo);
imagen.setImageResource(items.get(i).getImagenes());
titulo.setText(items.get(i).getTitulo());
subTitulo.setText(items.get(i).getSubTitulo());
if (items.get(i).getPathImage().length() > 0) {
imagen.setImageURI(Uri.parse(items.get(i).getPathImage()));
}
return vistaItem;
}
}
package com.macochave.filechooser;
import android.content.Context;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnRdMemoInter, btnWMemoInter, btnRdSD, btnWSD, btnRdProgram;
private TextView txtTexto;
private boolean sdDisponible = false;
private boolean sdAccesoEscritura = false;
/*
* FUENTES
* https://es.icons8.com
* https://www.flaticon.es/autores/smashicons
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnRdMemoInter = (Button) findViewById(R.id.btnRdMemoInt);
btnWMemoInter = (Button) findViewById(R.id.btnWMemoInt);
btnRdSD = (Button) findViewById(R.id.btnRdSD);
btnWSD = (Button) findViewById(R.id.btnWSD);
btnRdProgram = (Button) findViewById(R.id.btnRdProgram);
txtTexto = (TextView) findViewById(R.id.txtTexto);
btnRdMemoInter.setOnClickListener(this);
btnWMemoInter.setOnClickListener(this);
btnRdSD.setOnClickListener(this);
btnWSD.setOnClickListener(this);
btnRdProgram.setOnClickListener(this);
String estadoSD = Environment.getExternalStorageState();
/*
* HAY TARJETA SD INSERTADA
* TARJETA SD CON PERMISOS DE LECTURA
*/
sdDisponible = estadoSD.equals(Environment.MEDIA_MOUNTED) ? true : false;
sdAccesoEscritura = estadoSD.equals(Environment.MEDIA_MOUNTED_READ_ONLY) ? true : false;
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.btnRdMemoInt:
try {
BufferedReader reader =
new BufferedReader(new InputStreamReader(
openFileInput("meminterna.txt")
));
String texto = reader.readLine();
txtTexto.setText(texto);
reader.close();
}
catch (Exception ex)
{
Log.e("Ficheros", ex.getMessage());
}
break;
case R.id.btnWMemoInt:
try {
OutputStreamWriter writer =
new OutputStreamWriter(
openFileOutput("meminterna.txt",
Context.MODE_PRIVATE)
);
writer.write("Contenido del fichero de memoria interna.");
writer.close();
}
catch (Exception ex)
{
Log.e("Ficheros", ex.getMessage());
}
break;
case R.id.btnRdSD:
if (sdDisponible)
{
try {
File ruta_SD = Environment.getExternalStorageDirectory();
File file = new File(ruta_SD.getAbsolutePath(), "ficheroSD.txt");
BufferedReader reader =
new BufferedReader(
new InputStreamReader(
new FileInputStream(file)
)
);
String texto = reader.readLine();
txtTexto.setText(texto);
reader.close();
}
catch (Exception ex)
{
Log.e("Ficheros", ex.getMessage());
}
}
break;
case R.id.btnWSD:
if (sdDisponible && sdAccesoEscritura)
{
try {
File ruta_SD = Environment.getExternalStorageDirectory();
File file = new File(ruta_SD.getAbsolutePath(), "ficheroSD.txt");
OutputStreamWriter writer =
new OutputStreamWriter(
new FileOutputStream(file)
);
writer.write("Contenido del fichero de la SD");
writer.close();
}
catch (Exception ex)
{
Log.e("Ficheros", ex.getMessage());
}
}
break;
case R.id.btnRdProgram:
try {
InputStream stream =
getResources().openRawResource(R.raw.ficheroraw);
BufferedReader reader =
new BufferedReader(
new InputStreamReader(stream)
);
String texto = reader.readLine();
txtTexto.setText(texto);
reader.close();
}
catch (Exception ex)
{
Log.e("Ficheros", ex.getMessage());
}
break;
default:
break;
}
}
}
package com.macochave.filechooser;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class SecondActivity extends AppCompatActivity implements View.OnClickListener
{
private TextView txtSeleccion,txtTexto;
private Button btnBuscar, btnMover;
private ImageView imgImagen;
private String filename;
private String fullpath;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
File file = new File(Environment.getExternalStorageDirectory() + "/inventario");
file.mkdir();
txtSeleccion = (TextView) findViewById(R.id.txtSelect);
txtTexto = (TextView) findViewById(R.id.txtTexto);
btnBuscar = (Button) findViewById(R.id.btnBuscar);
btnMover = (Button) findViewById(R.id.btnMover);
imgImagen = (ImageView) findViewById(R.id.imgImagen);
btnBuscar.setOnClickListener(this);
btnMover.setOnClickListener(this);
try
{
Intent intent = getIntent();
filename = intent.getExtras().getString("filename");
fullpath = intent.getExtras().getString("fullpath");
Log.i("filename", filename);
Log.i("fullpath", fullpath);
txtSeleccion.setText(filename);
imgImagen.setImageURI(Uri.parse(fullpath));
}
catch (Exception ex)
{
Log.e("GetIntent", ex.getMessage());
}
}
@Override
public void onClick(View view)
{
switch (view.getId())
{
case R.id.btnBuscar:
explorar();
break;
case R.id.btnMover:
mover();
break;
default:
break;
}
}
private void explorar()
{
Intent intent = new Intent(this, ThirdActivity.class);
startActivity(intent);
}
private void mover()
{
if (fullpath.length() > 0)
{
try
{
String fullname_destino = Environment.getExternalStorageDirectory() + "/inventario/" + filename;
Log.i("Copiar", fullname_destino);
Log.i("Copiar", fullpath);
InputStream inputStream = new FileInputStream(fullpath);
OutputStream outputStream = new FileOutputStream(fullname_destino);
byte[] buf = new byte[1024];
int len;
while ((len = inputStream.read(buf)) > 0)
outputStream.write(buf, 0, len);
inputStream.close();
outputStream.close();
Log.i("Copiar", "Archivo copiado con éxito");
}
catch (IOException ex)
{
Log.e("Copiar", ex.getMessage());
}
}
}
private void abrirArchivo()
{
try {
File file = new File(filename);
if (file != null)
{
Log.i("Open File", "Archivo abierto con éxito");
FileReader reader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(reader);
String texto = bufferedReader.readLine();
String aux = "";
while (texto != null)
{
aux += texto;
texto = bufferedReader.readLine();
}
txtTexto.setText(aux);
bufferedReader.close();
}
else
{
Log.e("Open File", "No se puede abrir el archivo");
}
}
catch (Exception ex)
{
Log.e("Open File", ex.getMessage());
}
}
}
package com.macochave.filechooser;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.io.File;
import java.util.ArrayList;
public class ThirdActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private String directorioRaiz;
private ListView lstLista;
private ArrayList<Item> items;
private ListViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
lstLista = (ListView) findViewById(R.id.lstList);
items = new ArrayList<>();
directorioRaiz = Environment.getExternalStorageDirectory().getPath();
Log.i("FileChooser", directorioRaiz);
listaArchivos(directorioRaiz);
lstLista.setOnItemClickListener(this);
}
private void listaArchivos(String directorio)
{
File file = new File(directorio);
File[] files = file.listFiles();
items.add(
new Item(R.drawable.carpeta, "", "Subir carpeta", "../")
);
for (File f : files)
{
Item item = new Item(
R.drawable.carpeta,
"",
f.getName(),
f.getPath()
};
if (f.isFile())
{
if (f.getPath().endsWith("jpg") || f.getPath().endsWith("jpeg") || f.getPath().endsWith("png"))
item.setPathImage(f.getPath());
item.setImagenes(R.drawable.archivo);
}
items.add(item);
}
adapter = new ListViewAdapter(items, this);
lstLista.setAdapter(adapter);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Item item = (Item) adapterView.getItemAtPosition(i);
File file = new File(item.getSubTitulo());
if (file.isFile())
{
Log.i("FileChooser", item.getTitulo());
Log.i("FileChooser", item.getSubTitulo());
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("filename", item.getTitulo());
intent.putExtra("fullpath", item.getSubTitulo());
startActivity(intent);
}
else
{
Log.i("FileChooser", item.getTitulo());
Log.i("FileChooser", item.getSubTitulo());
adapter = null;
items.clear();
lstLista.setAdapter(adapter);
listaArchivos(item.getSubTitulo());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment