通过Intent浏览SD卡上的路径

时间:2012-02-02 20:47:44

标签: android android-intent

我想知道是否有办法打开文件浏览器(系统或像Astro这样的第三方)到特定路径。这里没有什么可说的......非常直截了当的问题。

3 个答案:

答案 0 :(得分:2)

听起来像ACTION_GET_CONTENT就是你想要的。 See here。相关位将是:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent,PICKFILE_RESULT_CODE);

在我的手机上(已经安装了astro),这会打开/ sdcard的astro对话框。我不确定在没有安装文件浏览器的手机上会做什么。我也不确定你是否能够使用这种方法实际指定起始路径。文档听起来好像你不能为ACTION_GET_CONTENT指定起始uri。

编辑:我想我现在更好地理解这个问题了。我以为你想要一个选择器样式的浏览器来获取用户的文件路径。如果你想要一个完整的浏览器来处理你的uri,那么这对我有用:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file:///mnt/sdcard/Music"), "*/*");
startActivity(intent);

这可能会给你很长的可能的处理程序列表,但我敢打赌系统中的任何文件管理器都会在列表中(astro肯定是)。

答案 1 :(得分:1)

我不相信任何制造商提供的文件浏览器提供这样的东西。

虽然我没有看到这样做的理论有任何明显的错误。我想你更有可能找到一个具有此功能的第三方文件浏览器,但我从来没有遇到任何这些。

你可以查看Open Intents OI File Manager这个概念似乎是他们的盟友,如果他们还没有这个功能,我敢打赌,如果你与他们联系,他们可能会考虑添加它。

答案 2 :(得分:0)

在这里,我将向您展示如何创建一个BROWSE按钮,当您单击时,它将打开SDCARD,您将选择一个文件,结果您将获得文件名和文件路径选择一个:

//您将点击的按钮**

 browse.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_PICK);
         Uri startDir = Uri.fromFile(new File("/sdcard"));
         startActivityForResult(intent, PICK_REQUEST_CODE);
        }

    });

//将获得结果文件名和文件路径的功能

protected void onActivityResult(int requestCode, int resultCode, Intent intent)
 { 
   if (requestCode == PICK_REQUEST_CODE)
  {
  if (resultCode == RESULT_OK)
  {
     Uri uri = intent.getData();

         if (uri.getScheme().toString().compareTo("content")==0)
         {      
             Cursor cursor =getContentResolver().query(uri, null, null, null, null);
             if (cursor.moveToFirst())
             {
                 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);//Instead of "MediaStore.Images.Media.DATA" can be used "_data"
                 Uri filePathUri = Uri.parse(cursor.getString(column_index));
                 String file_name = filePathUri.getLastPathSegment().toString();
                 String file_path=filePathUri.getPath();
                 Toast.makeText(this,"File Name & PATH are:"+file_name+"\n"+file_path, Toast.LENGTH_LONG).show();
             }
         }
  }
   }
 }