我正在尝试使用默认文件查看器获取用户选择的文件路径。
我在片段中有一个按钮,想要设置它的onClickListener来获取该文件的路径。
View rootView = inflater.inflate(R.layout.openfile,container,false);
Button choseFile = (Button) rootView.findViewById(R.id.btn_chose_file);
final EditText et1 = (EditText)rootView.findViewById(R.id.opened_file);
choseFile.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
getActivity().startActivityForResult(intent,PICKFILE_RESULT_CODE) ;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
switch (requestCode)
{
case PICKFILE_RESULT_CODE:
if (resultCode == Activity.RESULT_OK) {
String FilePath = data.getData().getPath();
et1.setText(FilePath);
Log.e("activity", "onActivityResult: ");
}
break;
}
}
});
return rootView;
}
但onActivityResult永远不会被调用,日志仍为空。此外,我无法选择文件。
模拟器的屏幕截图
onClick on ids.txt什么都不做。
答案 0 :(得分:0)
我正在尝试使用默认文件查看器获取用户选择的文件路径。
Android没有“默认文件查看器”。您使用ACTION_GET_CONTENT
的MIME类型无效(因为没有以file/
开头的官方MIME类型)。我希望你的代码在大多数设备上失败。
但onActivityResult永远不会被调用,日志仍为空,我也无法选择文件
首先,只有点击一个文件后该活动才会触发onActivityResult()
RESULT_OK
响应。
其次,如果您想要调用片段的 onActivityResult()
,请在片段上调用startActivityForResult()
。您在活动上调用startActivityForResult()
,因此正在调用活动“onActivityResult()
。
onClick on ids.txt什么都不做。
尝试有效的MIME通配符MIME类型(例如text/*
,*/*
)并查看是否有更好的结果。
另外,请取消String FilePath = data.getData().getPath();
和use the Uri
properly。实施ACTION_GET_CONTENT
的活动不必返回file:
Uri
。事实上,前进,这将变得非常罕见,如Android N is starting to ban the file:
Uri
。