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()
会给出所选文档的 Uri
。 getContentResolver()
会给你一个 ContentResolver
,在 ContentResolver
上调用 openInputStream()
,传入 Uri
,会给你一个 InputStream
Uri
.
标识的内容
我希望我的应用程序的用户能够从他们的云端硬盘中获取 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()
会给出所选文档的 Uri
。 getContentResolver()
会给你一个 ContentResolver
,在 ContentResolver
上调用 openInputStream()
,传入 Uri
,会给你一个 InputStream
Uri
.