1

我有一个文件选择器,我在 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() 时获取数据?

4

2 回答 2

1

从 onActivityResult() 中选择的目录中获取数据需要什么
你选择了路径,这样你就可以从那里读取你想要的文件..

使用此方法将文件作为字符串读取

private String readURLFromPath(File filePath){
    String dataString = "";


    // i have kept text.txt in the sd-card
    if (file.exists()) // check if file exist
    {
        // Read text from file
        StringBuilder text = new StringBuilder();

        try {
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            String line;
            while ((line = br.readLine()) != null) {
                text.append(line);
                text.append('\n');
            }
        } catch (IOException e){
            // You'll need to add proper error handling here
        }
        // Set the text
        dataString = text.toString();
    }
    return dataString ;
}

此方法将返回数据作为字符串现在您可以在服务器上发送此字符串数据...

于 2014-04-17T09:25:55.293 回答
0

解决方案是从 android 中的文件路径获取内容 uri,如前所述从文件路径获取内容 uri

于 2014-04-17T13:46:19.743 回答