调用系统自带的文件浏览器
这很简单:
/** 调用文件选择软件来选择文件 **/ 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; } }
本文地址:https://www.stayed.cn/item/16536
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我