因项目需要打开文件,因此做了一个打开文件的对话框,现在把这部分的代码共享出来了。
然后的打开文件对话框的一下封装:
首先是一个回调接口,该接口在文件选择完毕的通知调用者进行如果何种操作。文件接口声明,如下:
- // filename: CallbackBundle.java
- package com.example.openfiledemo;
- import android.os.Bundle;
- // 简单的Bundle参数回调接口
- public interface CallbackBundle {
- abstract void callback(Bundle bundle);
- }
然后的打开文件对话框的一下封装:
- // filename: OpenFileDialog.java
- package com.example.openfiledemo;
- 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.app.AlertDialog;
- import android.app.Dialog;
- import android.content.Context;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- import android.widget.Toast;
- import android.widget.AdapterView.OnItemClickListener;
- public class OpenFileDialog {
- public static String tag = "OpenFileDialog";
- static final public String sRoot = "/";
- static final public String sParent = "..";
- static final public String sFolder = ".";
- static final public String sEmpty = "";
- static final private String sOnErrorMsg = "No rights to access!";
- // 参数说明
- // context:上下文
- // dialogid:对话框ID
- // title:对话框标题
- // callback:一个传递Bundle参数的回调接口
- // suffix:需要选择的文件后缀,比如需要选择wav、mp3文件的时候设置为".wav;.mp3;",注意最后需要一个分号(;)
- // images:用来根据后缀显示的图标资源ID。
- // 根目录图标的索引为sRoot;
- // 父目录的索引为sParent;
- // 文件夹的索引为sFolder;
- // 默认图标的索引为sEmpty;
- // 其他的直接根据后缀进行索引,比如.wav文件图标的索引为"wav"
- public static Dialog createDialog(int id, Context context, String title, CallbackBundle callback, String suffix, Map<String, Integer> images){
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setView(new FileSelectView(context, id, callback, suffix, images));
- Dialog dialog = builder.create();
- //dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setTitle(title);
- return dialog;