Android: 如何从 Intent.ACTION_GET_CONTENT 中获取文档并将其转换为字节数组?

Android: how to fetch a document from Intent.ACTION_GET_CONTENT and transform it into an array of bytes?

我希望我的应用程序的用户能够从他们的云端硬盘中获取 PDF 文档并将其发送到服务器。

服务器端端点已准备就绪,我是这样打开驱动器的:

final Intent chooseFileIntent = new Intent(Intent.ACTION_GET_CONTENT);
String[] mimetypes = {"application/pdf"};
chooseFileIntent.setType("*/*");     
chooseFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
if (chooseFileIntent.resolveActivity(activity.getApplicationContext().getPackageManager()) != null) {
    chooseFileIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
    activity.startActivityForResult(chooseFileIntent, Uploader.PDF);
}

然后在获取文件后:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // What to do here with data?
}

这就是我卡住的地方,我不知道如何处理这个方法中的数据。

感谢您的帮助。

Android: how to fetch a document from Intent.ACTION_GET_CONTENT and transform it into an array of bytes?

这仅适用于小文档。否则,您将 运行 内存不足。使用 API 连接到可以使用 InputStream 而不是 byte[].

的服务器

I don't know how to handle the data in this method.

data.getData() 会给出所选文档的 UrigetContentResolver() 会给你一个 ContentResolver,在 ContentResolver 上调用 openInputStream(),传入 Uri,会给你一个 InputStream Uri.

标识的内容