首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

AsyncTask的用法 :兑现扫描SD卡指定后缀类型的文件

2012-07-19 
AsyncTask的用法 :实现扫描SD卡指定后缀类型的文件AsyncTask的用法:http://www.cnblogs.com/dawei/archive

AsyncTask的用法 :实现扫描SD卡指定后缀类型的文件
AsyncTask的用法:http://www.cnblogs.com/dawei/archive/2011/04/18/2019903.html
初探异步 AsyncTask 扫描SD卡:http://www.eoeandroid.com/thread-113400-1-1.html






package com.pandy.task;import java.io.File;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.ProgressDialog;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class AsyncTaskDemoActivity extends Activity {    /** Called when the activity is first created. */private Button button1;private EditText editText1;private List<String> list;private TextView textView1;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        this.setTitle("Pandy:扫描SD卡的文件类型.");                button1 = (Button)findViewById(R.id.button1);        editText1 = (EditText)findViewById(R.id.editText1);        textView1 = (TextView)findViewById(R.id.textView1);                button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(editText1.getText()==null||editText1.getText().toString().trim().length()==0){Toast.makeText(AsyncTaskDemoActivity.this, "请输入文件类型...",Toast.LENGTH_SHORT).show();return;}list = new ArrayList<String>();new AsyncTask<Integer,Integer,Integer>(){private ProgressDialog dialog;@Overrideprotected void onCancelled() {// TODO Auto-generated method stubsuper.onCancelled();}//执行完成之后@Overrideprotected void onPostExecute(Integer result) {// TODO Auto-generated method stubdialog.dismiss();super.onPostExecute(result);Toast.makeText(AsyncTaskDemoActivity.this, "执行完成...",Toast.LENGTH_SHORT).show();textView1.setText("");if(list!=null){for(int i=0; i<list.size(); i++){textView1.setText(textView1.getText()+list.get(i)+"\n");}}}//执行之前@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubdialog = ProgressDialog.show(AsyncTaskDemoActivity.this, "Title", "Load......");super.onPreExecute();}//修改界面@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}//这里开始启动进程@Overrideprotected Integer doInBackground(Integer... params) {// TODO Auto-generated method stub//textView1.setText(""); //为什么放在这里就会出错????String txt = editText1.getText()==null?"":editText1.getText().toString();if(txt.length()<=0) {Toast.makeText(AsyncTaskDemoActivity.this, "没有输入文件类型", Toast.LENGTH_LONG);return null;}String status = android.os.Environment.getExternalStorageState();if(android.os.Environment.MEDIA_MOUNTED.equalsIgnoreCase(status)){File file = android.os.Environment.getExternalStorageDirectory();scanSDCard(file,txt);return null;}else{Toast.makeText(AsyncTaskDemoActivity.this, "不能访问SD卡.", Toast.LENGTH_LONG);return null;}}}.execute(0);}});                    }        public void scanSDCard(File file,String ext){    if(file.isDirectory()){    File[] files = file.listFiles();    if(files!=null){    for(int i=0; i<files.length; i++){    File tmp = files[i];    if(tmp.isFile()){    String fileName = tmp.getName();        if(fileName.indexOf(".")>=0){        fileName = fileName.substring(fileName.lastIndexOf(".")+1);        if(ext!=null&&ext.equalsIgnoreCase(fileName))        list.add(tmp.getAbsolutePath());        }    }else    scanSDCard(tmp,ext);    }    }    }else{    if(file.isFile()){String fileName = file.getName();if(fileName.indexOf(".")>=0){fileName = fileName.substring(fileName.lastIndexOf(".")+1);if(ext!=null&&ext.equalsIgnoreCase(fileName))list.add(file.getAbsolutePath());}}    }    }}

热点排行