onShowFileChooser 事件调用的活动结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
intent){
super.onActivityResult(requestCode, resultCode, intent);
Toast.makeText(MainActivity.this, "here", Toast.LENGTH_LONG).show();
String s = "";
if(Build.VERSION.SDK_INT >= 21){
Uri[] results = null;
//Check if response is positive
if(resultCode== Activity.RESULT_OK){
if(requestCode == FCR){
ClipData clipData = intent.getClipData();
if(null == mUMA){
return;
}
if(clipData == null){
Toast.makeText(this, "no clip", Toast.LENGTH_SHORT).show();
Uri uri = intent.getData();
results = new Uri[]{Uri.parse(uri.toString())};
mUMA.onReceiveValue(results);
return;
}else {
在 else 语句中,我使用 for 循环获取文件的路径,并将所有路径放在字符串 's' 中:
for(int i=0; i<clipData.getItemCount(); i++){
ClipData.Item item = clipData.getItemAt(i);
Uri uri = item.getUri();
s+=uri.toString()+"\n";
}
results = new Uri[]{Uri.parse(s)};
mUMA.onReceiveValue(results);
return;
}
但是这个函数允许我只返回一个意图的文件路径,这个是最后选择的文件:
mUMA.onReceiveValue(results);
mUMA 是:
private ValueCallback<Uri[]> mUMA;