android sd卡列目录文件_Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等...
public class GridViewFile extends Activity implementsView.OnClickListener {privateContext context;privateTextView tv_title, textView;privateGridView listView;private final String MUSIC_PATH = "/";//記錄當(dāng)前路徑下 的所有文件的數(shù)組
File currentParent;//記錄當(dāng)前路徑下的所有文件的文件數(shù)組
File[] currentFiles;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context= this;
initView();
}public voidinitView() {
findViewById(R.id.public_top_img_close).setOnClickListener(this);
listView=(GridView) findViewById(R.id.gridview);
textView=(TextView) findViewById(R.id.llss);
onLoad();
}public voidonLoad() {
ListSongsName();
}private voidListSongsName() {//獲取系統(tǒng)的SD卡目錄
File root = newFile(MUSIC_PATH);//如果SD卡存在
if(root.exists()) {
currentParent=root;
currentFiles= root.listFiles();//獲取root目錄下的所有文件//使用當(dāng)前陸慕下的全部文件,文件夾來填充ListView
inflateListView(currentFiles);
}//為ListView的列表項(xiàng)的單擊事件綁定監(jiān)視器
listView.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@Overridepublic void onItemClick(AdapterView>parent, View view,int position, longid) {//用戶點(diǎn)擊了文件,則調(diào)用手機(jī)已安裝軟件操作該文件
if(currentFiles[position].isFile()) {
onError(currentFiles[position].getPath()+ "1");
Intent intent=OpenFile.openFile(currentFiles[position]
.getPath());
startActivity(intent);
}else{//獲取currentFiles[position]路徑下的所有文件
File[] tmp =currentFiles[position].listFiles();if (tmp == null || tmp.length == 0) {
Toast.makeText(GridViewFile.this, "空文件夾!",
Toast.LENGTH_SHORT).show();
}//if
else{//獲取用戶單擊的列表項(xiàng)對應(yīng)的文件夾,設(shè)為當(dāng)前的父文件夾
currentParent =currentFiles[position];//保存當(dāng)前文件夾內(nèi)的全部問價(jià)和文件夾
currentFiles =tmp;
inflateListView(currentFiles);
}
}
}
});
}//更新列表
private voidinflateListView(File[] files) {if (files.length == 0)
Toast.makeText(GridViewFile.this, "sd卡不存在", Toast.LENGTH_SHORT)
.show();else{//創(chuàng)建一個(gè)List集合,List集合的元素是Map
List> listItems = new ArrayList>();for (int i = 0; i < files.length; i++) {
Map listItem = new HashMap();//如果當(dāng)前File是文件夾,使用folder圖標(biāo);否則使用file圖標(biāo)
Log.i("path", files[i].getPath());
Log.i("path", files[i].getName());if(files[i].isDirectory())
listItem.put("icon", R.drawable.file_wenjianjia);//else if(files[i].isFi)
elselistItem.put("icon", R.drawable.file_wenjian1);
listItem.put("fileName", files[i].getName());//添加List項(xiàng)
listItems.add(listItem);
}//創(chuàng)建一個(gè)SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
R.layout.acheshi_item,new String[] { "icon", "fileName"},new int[] { R.id.imageView1, R.id.text_path });//位ListView設(shè)置Adpter
listView.setAdapter(simpleAdapter);try{
textView.setText("當(dāng)前路徑為:" +currentParent.getCanonicalPath());
}catch(IOException e) {
e.printStackTrace();
}
}
}
@Overridepublic voidonClick(View v) {
onbey();
}//返回上層菜單
private voidonbey() {try{if (!MUSIC_PATH.equals(currentParent.getCanonicalPath())) {//獲取上一層目錄
currentParent =currentParent.getParentFile();//列出當(dāng)前目錄下的所有文件
currentFiles =currentParent.listFiles();//再次更新ListView
inflateListView(currentFiles);
}else{new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("提示")
.setMessage("確定要退出嗎?")
.setPositiveButton("確定",newDialogInterface.OnClickListener() {
@Overridepublic voidonClick(DialogInterface dialog,intwhich) {
finish();
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener() {
@Overridepublic voidonClick(DialogInterface dialog,intwhich) {
}
}).create().show();
}
}catch(Exception e) {
e.printStackTrace();
}
}public voidonError(Object error) {
Toast.makeText(getApplicationContext(), error+ "", Toast.LENGTH_LONG)
.show();
}protected voidonDestroy() {super.onDestroy();
}
}
總結(jié)
以上是生活随笔為你收集整理的android sd卡列目录文件_Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: key位置 win10生成的ssh_Wi
- 下一篇: android sina oauth2.