Android中调用系统的文件浏览器及自制简单的文件浏览器

调用系统自带的文件浏览器这很简单:

/** 调用文件选择软件来选择文件 **/ private void showFileChooser() {   intent = new Intent(Intent.ACTION_GET_CONTENT);   intent.setType("*/*");   intent.addCategory(Intent.CATEGORY_OPENABLE);   try {     startActivityForResult(Intent.createChooser(intent, "请选择一个要上传的文件"),         FILE_SELECT_CODE);   } catch (android.content.ActivityNotFoundException ex) {     // Potentially direct the user to the Market with a Dialog     Toast.makeText(getActivity(), "请安装文件管理器", Toast.LENGTH_SHORT)         .show();   } } 

在catch,我们可以做更多的操作,比如会跳转到一个下载文件管理器的页面或者等等。

对于返回的数据怎么处理呢。我项目中的上传是如下接收:

/** 根据返回选择的文件,来进行上传操作 **/   @Override   public void onActivityResult(int requestCode, int resultCode, Intent data) {     // TODO Auto-generated method stub     if (resultCode == Activity.RESULT_OK) {       // Get the Uri of the selected file       Uri uri = data.getData();       String url;       try {         url = FFileUtils.getPath(getActivity(), uri);         Log.i("ht", "url" + url);         String fileName = url.substring(url.lastIndexOf("/") + 1);         intent = new Intent(getActivity(), UploadServices.class);         intent.putExtra("fileName", fileName);         intent.putExtra("url", url);         intent.putExtra("type ", "");         intent.putExtra("fuid", "");         intent.putExtra("type", "");          getActivity().startService(intent);        } catch (URISyntaxException e) {         // TODO Auto-generated catch block         e.printStackTrace();       }     }     super.onActivityResult(requestCode, resultCode, data);   } 

自制文件浏览器:这里只加一些简单的图形:

来看代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:orientation="vertical"   android:layout_gravity="center_horizontal"   tools:context=".MainActivity" >    <TextView     android:id="@+id/txt1"     android:layout_width="wrap_content"     android:layout_height="wrap_content" />   <ImageButton      android:id="@+id/imageBt1"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:src="@drawable/home"/>    <ListView     android:id="@+id/listFile"     android:layout_width="wrap_content"     android:layout_height="wrap_content" >   </ListView>  </LinearLayout> 
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:orientation="horizontal" >    <ImageView     android:id="@+id/images"     android:layout_width="wrap_content"     android:layout_height="wrap_content" />    <TextView     android:id="@+id/txtview"     android:layout_width="wrap_content"     android:layout_height="wrap_content" />  </LinearLayout> 

package com.android.xiong.sdfilelook;  import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView;  public class MainActivity extends Activity {    private ListView listfile;   //当前文件目录   private String currentpath;   private TextView txt1;   private ImageView images;   private TextView textview;   private ImageButton imagebt1;    private int[] img = { R.drawable.file, R.drawable.folder, R.drawable.home };   private File[] files;   private SimpleAdapter simple;    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     listfile = (ListView) findViewById(R.id.listFile);     txt1 = (TextView) findViewById(R.id.txt1);     imagebt1 = (ImageButton) findViewById(R.id.imageBt1);     init(Environment.getExternalStorageDirectory());     listfile.setOnItemClickListener(new OnItemClickListener() {        @Override       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,           long arg3) {         // TODO Auto-generated method stub         // 获取单击的文件或文件夹的名称         String folder = ((TextView) arg1.findViewById(R.id.txtview))             .getText().toString();         try {           File filef = new File(currentpath + '/'               + folder);           init(filef);          } catch (Exception e) {           e.printStackTrace();         }        }     });     //回根目录     imagebt1.setOnClickListener(new OnClickListener() {              @Override       public void onClick(View v) {         init(Environment.getExternalStorageDirectory());         }     });        }   // 界面初始化   public void init(File f) {     if (Environment.getExternalStorageState().equals(         Environment.MEDIA_MOUNTED)) {       // 获取SDcard目录下所有文件名       files = f.listFiles();       if (!files.equals(null)) {         currentpath=f.getPath();         txt1.setText("当前目录为:"+f.getPath());         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();         for (int i = 0; i < files.length; i++) {           Map<String, Object> maps = new HashMap<String, Object>();           if (files[i].isFile())             maps.put("image", img[0]);           else             maps.put("image", img[1]);           maps.put("filenames", files[i].getName());           list.add(maps);         }         simple = new SimpleAdapter(this, list,             R.layout.fileimageandtext, new String[] { "image",                 "filenames" }, new int[] { R.id.images,                 R.id.txtview });         listfile.setAdapter(simple);        }     } else {       System.out.println("该文件为空");     }   }    @Override   public boolean onCreateOptionsMenu(Menu menu) {     // Inflate the menu; this adds items to the action bar if it is present.     getMenuInflater().inflate(R.menu.main, menu);     return true;   }  } 

是清晰的又是朦胧的,是一杯苦茶,最后却品出清雅之香。

Android中调用系统的文件浏览器及自制简单的文件浏览器

相关文章:

你感兴趣的文章:

标签云: