本文共 3258 字,大约阅读时间需要 10 分钟。
package com.ouling.ex_SDAsyncTask;import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.regex.Pattern;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class Ex_SDAsyncTaskActivity extends Activity { final String TAG="ASYNCTASK"; Listfilelist; // 搜索到的文件 EditText editText; Button btn_search; Context context; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = this; editText = (EditText) findViewById(R.id.edit); btn_search = (Button) findViewById(R.id.serch); filelist = new ArrayList (); btn_search.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i(TAG, "onclik start Thread id "+Thread.currentThread().getId()); // 搜索文件的异步任务 new AsyncTask () { private ProgressDialog dialog; // UI显示 protected void onPreExecute() { Log.i(TAG, "onPreExecute Thread id "+Thread.currentThread().getId()); dialog = ProgressDialog.show( Ex_SDAsyncTaskActivity.this, "", "正在扫描SD卡,请稍候...."); super.onPreExecute(); } // 后台执行 protected String doInBackground(Integer... params) { Log.i(TAG, "doInBackground Thread id "+Thread.currentThread().getId()); if (!android.os.Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED)) { } else { if (!editText.getText().toString().equals("")) { filelist.clear(); return Search_Files(Environment .getExternalStorageDirectory()); } } return null; } // 搜索完毕后,结果处理 protected void onPostExecute(String result) { Log.i(TAG, "onPostExecute Thread id "+Thread.currentThread().getId()); dialog.dismiss(); if (editText.getText().toString().equals("")) { Toast.makeText(Ex_SDAsyncTaskActivity.this, "请输入搜索的文件名", 1000).show(); } else { new AlertDialog.Builder(Ex_SDAsyncTaskActivity.this) .setTitle("SD卡搜索结果") .setMessage(result) .create().show(); } super.onPostExecute(result); } }.execute(0); Log.i(TAG, "onClick stop Thread id "+Thread.currentThread().getId()); }; }); } /** * 获取文件列表 * * @param filePath */ public String Search_Files(File filePath) { File[] files = filePath.listFiles(); String tempString=editText.getText().toString().toLowerCase(); if (files != null) { for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { Search_Files(files[i]); } else { //匹配文件名 if(files[i].getName().toLowerCase().contains(tempString)){ filelist.add(files[i].getAbsolutePath()+"\n"); } } } } return filelist.toString(); }}
转载地址:http://pfkib.baihongyu.com/