Android 显示SD卡路径以选择用于存储下载文件的路径

Android 显示SD卡路径以选择用于存储下载文件的路径,android,android-layout,Android,Android Layout,我正在编写一个应用程序,它允许用户输入URL,然后选择放置下载文件的位置。但我被困在第二步。 我所要做的就是像这样显示位置: 并将路径返回到位置。 有人有解决办法吗?提前谢谢! PS:显示外部存储器。创建活动 public class ... extend activity { string path = "/"; public void onResume() { ... setContentView(..); if

我正在编写一个应用程序,它允许用户输入URL,然后选择放置下载文件的位置。但我被困在第二步。 我所要做的就是像这样显示位置:

并将路径返回到位置。 有人有解决办法吗?提前谢谢! PS:显示外部存储器。

创建活动

    public class ... extend activity
    {

    string path  = "/";

    public void onResume()
    {
     ...
     setContentView(..);
     if (getIntent().hasExtra("path"))
     {
       path = getIntent().getStringExtra("path");
     }

     listview = findviewbyid(R.id.listview);

     listview.setAdapter(new adapter(path));

     listview.setOnItemClickListener(this);
    }

    public void onActivityResult(result)
    {
      if (resultOK) ...
    }

    public void onclicklisteneer(view,pos,id)
    {
     if (dir)
     {
      Intent intent = new Intent(this, this.class);
      intent.put("path",path+" "+view.getAdapter().getItem(pos))
      intent.setFlag(FLAG_NEW_TASK)
      startActivityForResult(intent)
     } 
     else if (file)
     {
      setResult(Result_OK);
      finish();
     }

    }

   }

我就是这样做的,这对我来说很有用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tree_view);

    File dir = new File("/sdcard");
    ArrayList<String> folders = new ArrayList<String>();
    final File[] fileList = dir.listFiles();

    if (fileList == null){
        Toast msg = Toast.makeText(this, "No files", 3000);
        msg.show();
    }else{
        for (File f:fileList){
            if (f.isDirectory()){
                folders.add(f.getName());
            }
        }
        final ListView lvFolder = (ListView)findViewById(R.id.lvTree);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_selectable_list_item, folders);
        lvFolder.setAdapter(adapter);
        lvFolder.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View v,
                    int position, long id) {
                // TODO Auto-generated method stub
                Object o = lvFolder.getItemAtPosition(position);
              String fullObject = (String)o;
              Toast.makeText(getApplicationContext(), "You have chosen: " + " " + fullObject.toString(), Toast.LENGTH_LONG).show();
            }
        });
    }

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_树视图);
文件目录=新文件(“/sdcard”);
ArrayList folders=新建ArrayList();
最终文件[]fileList=dir.listFiles();
if(fileList==null){
Toast msg=Toast.makeText(这是“无文件”,3000);
msg.show();
}否则{
对于(文件f:文件列表){
if(f.isDirectory()){
folders.add(f.getName());
}
}
最终ListView lvFolder=(ListView)findViewById(R.id.lvTree);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u可选的\u列表\u项、文件夹);
lvFolder.setAdapter(适配器);
lvFolder.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0,视图v,
内部位置,长id){
//TODO自动生成的方法存根
对象o=lvFolder.getItemAtPosition(位置);
字符串fullObject=(字符串)o;
Toast.makeText(getApplicationContext(),“您已选择:”+“”+fullObject.toString(),Toast.LENGTH\u LONG.show();
}
});
}
}