Android 通过intent从图库中拾取的图像长度

Android 通过intent从图库中拾取的图像长度,android,file,android-intent,gallery,Android,File,Android Intent,Gallery,我有个问题。我想做一个文件上传程序。我正在使用Intent.ACTION\u GET\u CONTENT从我的设备中拾取任何文件。我在onActivityResult中收到的文件如下: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CHOOSER:

我有个问题。我想做一个文件上传程序。我正在使用Intent.ACTION\u GET\u CONTENT从我的设备中拾取任何文件。我在onActivityResult中收到的文件如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case REQUEST_CHOOSER:
            if (resultCode == RESULT_OK) {
                final Uri uri = data.getData();
                File file = FileUtils.getFile(uri);
                String fileName = file.getName();
                String filePath = file.getPath();
                int fileSize = Integer.parseInt(String.valueOf(file.length()/1024));

                tvName.setText(fileName);
                tvPath.setText(filePath);
                tvSize.setText(String.valueOf(fileSize) + "kB");
            }
    }
}
我想显示用户有关拾取文件的信息。一般来说,一切都很好,但当我从gallery中选择Image时:

  • 文件名没有显示任何格式-它是一个数字(可能是指内存中的文件)。当我通过安装的文件explore选择图像时,我得到了一些类似imagename.png等的东西,但从gallery中选择的像是“195493”
  • 根据从库中拾取的数据创建的File.length为0
    在通过intent从Gallery中拾取图像后,是否有任何方法可以访问真实图像的名称和大小

    从库中拾取图像时,不会得到对实际文件的引用,而是数据库中的一行。您必须使用中的光标检索实际的文件路径。

    只需输入意图中的URI并获取任何文件的大小

    uri = data.getData();
            Cursor returnCursor = getContentResolver().query(uri, null, null, null, null);
            int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
            int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
            returnCursor.moveToFirst();
            Log.e("TAG", "Name:" + returnCursor.getString(nameIndex));
            Log.e("TAG","Size: "+Long.toString(returnCursor.getLong(sizeIndex)));
    

    我想这会对您有所帮助。

    是的,我刚刚完成了,而且效果很好,谢谢您的回复和正确的提示