得到SD卡的文件目录

、SDCard文件浏览器的制作:
1、原理:利用File对象的listFile()方法获得File[]数组。将数组产生的信息填充在listview中。
核心代码中的重要方法:
  1. listFiles()
  2. isFile()
  3. isDirectory()
  4. getAbsolutePath()
  5. getParentFile()
    
    
        
    
    
    
        
    
        
    
    
    
    主要的逻辑代码,点击文件可以进行相应的操作,例如查看图片,查看文件等
    package com.hht.homework_sdcardfilebrowser;
    
    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.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.webkit.MimeTypeMap;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	private TextView textView_main_show;
    	private ListView listView_main_filelist;
    
    	private File currentFile = null;
    
    	private File[] arrCurrentFiles = null;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		textView_main_show = (TextView) findViewById(R.id.textView_main_show);
    		listView_main_filelist = (ListView) findViewById(R.id.listView_main_filelist);
    		if (SDCardHelper.isSDcardMounted()) {
    			currentFile = new File(SDCardHelper.getSDCardPath());
    			fillListView(currentFile);
    		} else {
    			Toast.makeText(MainActivity.this, "SDCARD不存在!", Toast.LENGTH_LONG)
    
    			.show();
    		}
    		listView_main_filelist
    				.setOnItemClickListener(new OnItemClickListener() {
    
    					@Override
    					public void onItemClick(AdapterView parent, View view,
    							int position, long id) {
    						// TODO Auto-generated method stub
    						if (arrCurrentFiles[position].isDirectory()) {
    							File[] arrSubFiles = arrCurrentFiles[position]
    									.listFiles();
    							if (arrSubFiles.length == 0) {
    								Toast.makeText(MainActivity.this, "您点击的是空目录!",
    
    								Toast.LENGTH_SHORT).show();
    							} else {
    								fillListView(arrCurrentFiles[position]);
    							}
    						} else {
    							String extension = MimeTypeMap
    									.getFileExtensionFromUrl(arrCurrentFiles[position]
    											.getAbsolutePath());
    							// setTitle(extension);
    							Intent intent = new Intent();
    							intent.setAction(android.content.Intent.ACTION_VIEW);
    							if (extension.equals("jpg")
    									|| extension.equals("gif")
    									|| extension.equals("png")
    									|| extension.equals("bmp")
    									|| extension.equals("jpeg")) {
    								intent.setDataAndType(
    										Uri.fromFile(arrCurrentFiles[position]),
    										"image/*");
    							} else if (extension.equals("mp3")
    									|| extension.equals("mp4")
    									|| extension.equals("mpg")
    									|| extension.equals("avi")
    									|| extension.equals("3gp")
    									|| extension.equals("mpeg")) {
    								intent.setDataAndType(
    										Uri.fromFile(arrCurrentFiles[position]),
    										"video/*");
    							} else if (extension.equals("au")
    									|| extension.equals("mid")) {
    								intent.setDataAndType(
    										Uri.fromFile(arrCurrentFiles[position]),
    										"audio/*");
    							} else if (extension.equals("txt")
    									|| extension.equals("xml")
    									|| extension.equals("log")
    									|| extension.equals("html")) {
    								intent.setDataAndType(
    										Uri.fromFile(arrCurrentFiles[position]),
    										"text/*");
    							} else {
    								intent.setDataAndType(
    										Uri.fromFile(arrCurrentFiles[position]),
    										"text/*");
    							}
    							startActivity(intent);
    						}
    
    					}
    				});
    	}
    
    	@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;
    	}
    
    	public void clickButton(View v) {
    		switch (v.getId()) {
    		case R.id.button_main_back:
    			if (!currentFile.getAbsolutePath().equals(
    					SDCardHelper.getSDCardPath())) {
    				File file = currentFile.getParentFile();
    
    				fillListView(file);
    			}
    
    			break;
    
    		default:
    			break;
    		}
    
    	}
    
    	public void fillListView(File file) {
    
    		currentFile = file;
    		arrCurrentFiles = currentFile.listFiles();
    
    		List> list = new ArrayList>();
    		for (int i = 0; i < arrCurrentFiles.length; i++) {
    			Map map = new HashMap();
    			if (arrCurrentFiles[i].isDirectory()) {
    				map.put("imgId", R.drawable.folder);
    			} else {
    				map.put("imgId", R.drawable.file);
    			}
    			map.put("filename", arrCurrentFiles[i].getName());
    			list.add(map);
    		}
    
    		SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,
    				R.layout.item_listview_main,
    				new String[] { "imgId", "filename" }, new int[] {
    						R.id.imageView_item_listview_type,
    						R.id.textView_item_listview_filename });
    		listView_main_filelist.setAdapter(adapter);
    		textView_main_show.setText(currentFile.getAbsolutePath());
    
    	}
    
    }
    


你可能感兴趣的:(Android技术)