1

我的手机中有一个内置的文件管理器。我如何通过我的应用程序中的代码调用它。

4

2 回答 2

1

我编写了自己的文件管理器,如下所示。可能对大家有用。

如果我错了,试试这个并纠正我

public class FileManager extends Activity {

private String[] basePath = {Environment.getExternalStorageDirectory() + "", "/mnt/sdcard2"};

private ListView listView;

private ArrayList<String> pathList;
ArrayAdapter<String> adapter;
private ArrayList<String> fileList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_file_manager);

    listView = (ListView)findViewById(R.id.listView);

    fileList = new ArrayList<String>();
    pathList = new ArrayList<String>();

    adapter = new ArrayAdapter<String>(this,    android.R.layout.simple_list_item_1, fileList);
    loadBasedata();
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            // Path is hardcoded
            if(pathList.size() == 0)
                pathList.add(basePath[0]);
            else
                pathList.add(pathList.get(pathList.size() - 1) + "/" + fileList.get(position));
            fileList.clear();
            // Add new files to list
            addFilesToList(pathList.get(pathList.size() - 1));
            adapter.notifyDataSetChanged();
        }
    }); 
}
private void loadBasedata() {
    fileList.clear();

    fileList.add("Internal sdcard");
    File file = new File(basePath[1]);
    if(file.exists())
    {
        fileList.add("External sdcard");
    }
    adapter.notifyDataSetChanged();
}   
@Override
public void onBackPressed() {

    if(pathList.isEmpty())
        finish();
    else if(pathList.size() == 1)
    {
        pathList.clear();
        loadBasedata();
    }
    else
    {
        fileList.clear();
        pathList.remove(pathList.size() - 1);
        addFilesToList(pathList.get(pathList.size() - 1));
        adapter.notifyDataSetChanged();
    }
}
private void addFilesToList(String path) {
    File parentDir = new File(path);

    if(parentDir.isDirectory())
    {
        File[] files = parentDir.listFiles();
        //this.adapter.add("Go Back");
        for(int i = 0; i < files.length; i++)
        {
            String filename=files[i].getName();
            fileList.add(filename);        
        }
    }
}

}

于 2013-03-23T12:04:27.967 回答
0

尝试这个

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
intent.setData(Uri.parse("file://"));

if (getPackageManager().resolveActivity(intent, 0) != null)
    startActivity(intent);

部分安卓操作系统没有文件浏览器,需要进行以上验证。

于 2013-03-15T02:55:26.540 回答