Android 中的檔案管理

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

專案下載:FileManager.zip

執行畫面

AndroidFileManagerRun.jpg

程式:FileManagerActivity.java

package ccc.android;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class FileManagerActivity extends ListActivity {
    List<String> fileNames = new ArrayList<String>();
    List<String> filePaths = null;
    TextView errorText;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        errorText = (TextView) findViewById(R.id.errorMsg);
        showDir("/");
    }

    private void showDir(String pPath) {
        fileNames = new ArrayList<String>();
        filePaths = new ArrayList<String>();
        File dir = new File(pPath);
        String parent = dir.getParent();
          if (parent != null) {
              fileNames.add("上層:"+parent);
              filePaths.add(parent);
          } else {
              fileNames.add("上層:無");
              filePaths.add(pPath);              
          }
        fileNames.add("目前:"+pPath);
        filePaths.add(pPath);
        File[] files = dir.listFiles();
        for (int i=0; i<files.length; i++) 
        {
            File file = files[i];
            fileNames.add(file.getName());
            filePaths.add(file.getPath());
        }
        ArrayAdapter<String> fileAdapter = 
            new ArrayAdapter<String>(this, R.layout.filerowlayout, fileNames);
        setListAdapter(fileAdapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        errorText.setText("錯誤:無!");
        String choosePath = filePaths.get(position);
        File file = new File(choosePath);
        if (file.canRead()) {
            if (file.isDirectory()) {
                   showDir(choosePath);
               } else {
                   errorText.setText("錯誤:"+choosePath+"是檔案,不能點進去!");
               }
        } else {
               errorText.setText("錯誤:權限不足,不能點進去!");
        }        
    }
}

Layout 檔案:main.xml

請注意:ListView 的 id="@android:id/list" 是固定的,不能改,否則 ListViewActivity 會找不到而發生當掉的情況。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
  android:id = "@+id/errorMsg"
  android:layout_width="wrap_content"
  android:layout_height="20px"
  android:text="錯誤:無!"/>
<ListView 
    android:id="@android:id/list" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent">
</ListView>
</LinearLayout>

Layout 檔案:filerowlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id = "@+id/textViewFileRow"
  android:layout_width="wrap_content"
  android:layout_height="20px">
</TextView>

參考文獻

  1. 2009年6月2日星期二, ListView跟ListActivity小考究

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License