我有一个文件选择器,我在 web 视图中调用它来上传文件。允许我在文件选择器活动中检索文件的方法如下:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Option o = adapter.getItem(position);
if (o.isFolder() || o.isParent()) {
currentDir = new File(o.getPath());
fill(currentDir);
} else {
//onFileClick(o);
fileSelected = new File(o.getPath());
Intent intent = new Intent();
intent.putExtra("fileSelected", fileSelected.getAbsolutePath());
setResult(Activity.RESULT_OK, intent);
finish();
}
}
这只允许我获取路径onActivityResult of my webview
(它调用我的文件选择器来上传文件)。该方法onActivityResult
由下面的代码给出。
如果我使用手机中安装的其他应用程序而不是文件选择器,我使用:
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
然后结果通过以下方式发送:
this.mUploadMessage.onReceiveValue(uri);
从那时起,它就正常工作了。但是我的文件选择器intent.getData ()
等于 null
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == this.mUploadMessage) {
return;
}
if (resultCode != RESULT_OK) {
mUploadMessage.onReceiveValue(null);
var = 0;
return;
}
// Toast.makeText(getApplicationContext() , "onActivityResult()" + String.valueOf(requestCode) ,Toast.LENGTH_LONG).show();
// Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
// this.mUploadMessage = null;
String fileSelected = intent.getStringExtra("fileSelected");
Bundle result = intent.getExtras();
//result = Uri.parse(fileSelected);
//this.mUploadMessage.onReceiveValue(result);
if (resultCode == RESULT_OK) {
if (intent != null) {
// Get the URI of the selected file
final Uri uri = intent.getData();
Log.i("TOTOTOT", "Uri = " + uri.toString());
Toast.makeText(this, fileSelected + " " + uri.toString() , Toast.LENGTH_SHORT).show();
this.mUploadMessage.onReceiveValue(uri);
}
}
super.onActivityResult(requestCode, resultCode, intent);
}
}
为了检索数据和路径,而不仅仅是发送文件的路径,我应该在两种方法中返回什么?它应该是所有的捆绑包还是你知道如何在使用 Intent.getData() 时获取数据?