2013-03-15 54 views

回答

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);   
     } 
    } 
} 

}

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); 

某些Android操作系統沒有得到任何文件瀏覽器,所以上述需要驗證。

+0

,使我的應用程序沒有變化。 意圖fileMangerIntent = new Intent(Intent.ACTION_GET_CONTENT,Uri.parse(Url)); startActivity(fileMangerIntent); 我試過這個,但它打開我的根資源管理器不是我的文件管理器。 – 2013-03-16 15:30:48

+0

你通過「我的文件管理器」引用了什麼?它是你自己的文件管理器還是下載的? – 2013-03-17 03:35:36

相關問題