Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El siguiente documento muestra la forma de realizar la bsqueda y seleccin de archivos desde una aplicacin Android. [Escriba el nombre del autor] 13/11/2013
Creacin de la UI de la aplicacin
Para el caso de este documento se desea que la UI de la aplicacin conste de un botn (Seleccionar Archivo) que permita acceder un explorador de archivos en donde se va a seleccionar el archivo buscado y de un TextView en donde se va a desplegar el Path del archivo que se est buscando. Como se muestra en la siguiente imagen.
Para dar la forma y agregarle color al botn que realiza la bsqueda dentro de la carpeta drawable del proyecto se debe crear un archivo XML de nombre botn_buscar.xml que contenga el siguiente cdigo.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="@android:color/holo_orange_light"/> <corners android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" android:topLeftRadius="10dp" android:topRightRadius="10dp"/> </shape>
Para dar la forma y agregarle color al TextView que almacena los resultados de la bsqueda dentro de la carpeta drawable del proyecto se debe crear un archivo XML de nombre txt_filename.xml que contenga el siguiente cdigo.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="@android:color/darker_gray"/> </shape>
public class FileExplorerActivity extends ListActivity { private private private private private private List<String> item = null; List<String> path = null; String root="/"; TextView myPath; String archivo_seleccionado; String archivo_nombre;
//Enva los resultados de la bsqueda al activity princial public void finish() { Intent data = new Intent(); data.putExtra("archivo_seleccionado", archivo_seleccionado); data.putExtra("archivo_nombre", archivo_nombre); setResult(RESULT_OK, data); super.finish(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. main_file); myPath = (TextView)findViewById(R.id. path); getDir(root); } //Permite listar todos los directorios de la memoria del dispositivo private void getDir(String dirPath){ myPath.setText(dirPath); item = new ArrayList<String>(); path = new ArrayList<String>(); File f = new File(dirPath);
File[] files = f.listFiles(); if(!dirPath.equals(root)){ item.add(root); path.add(root); item.add("../"); path.add(f.getParent()); } for(int i=0; i < files.length; i++){ File file = files[i]; path.add(file.getPath()); if(file.isDirectory()) item.add(file.getName() + "/"); else item.add(file.getName()); } ArrayAdapter<String> fileList = new ArrayAdapter<String>(this, R.layout.row_file, item); setListAdapter(fileList); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { File file = new File(path.get(position)); if (file.isDirectory()) { if(file.canRead()) getDir(path.get(position)); else { new AlertDialog.Builder(this) .setTitle("[" + file.getName() + "] folder no puede ser leido!") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {} }).show(); } } else { archivo_seleccionado = file.getAbsolutePath(); archivo_nombre = file.getPath();//getName(); finish(); } } }
import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class PrincipalActivity extends Activity { private Button open_file_explorer; private TextView archivo; private String archivo_seleccionado; private String archivo_nombre; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.principal_main); archivo = (TextView)findViewById(R.id.txtNombreArchivo); open_file_explorer = (Button)findViewById(R.id.btnBuscar); open_file_explorer.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent file_explorer = new Intent(PrincipalActivity.this,FileExplorerActivity.class); startActivityForResult(file_explorer, 555);// <-- ? } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == 555) { if (data.hasExtra("archivo_seleccionado")) { archivo_seleccionado = data.getExtras().getString("archivo_seleccionado"); archivo_nombre = data.getExtras().getString("archivo_nombre"); archivo.setText(archivo_nombre); Toast.makeText(this, archivo_nombre, Toast.LENGTH_SHORT); } } } }
Programa ya en funcionamiento
Explorador de Archivos