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