在 onActivityResult() 方法中使用 Intent.getData() 检查返回的数据。如果 Intent 包含 EXTRA_STREAM,可以使用 getContentResolver().openInputStream() 方法打开文件并将其复制到应用程序的私有存储区域。
示例代码如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
Uri uri = data.getData();
if (uri != null) {
// Handle the file selection
} else if (data.getExtras() != null && data.getExtras().containsKey(Intent.EXTRA_STREAM)) {
try {
InputStream stream = getContentResolver().openInputStream((Uri) data.getExtras().get(Intent.EXTRA_STREAM));
File file = new File(getFilesDir(), "selected_file");
OutputStream output = new FileOutputStream(file);
byte[] buffer = new byte[4 * 1024]; // or other buffer size
int read;
while ((read = stream.read(buffer)) != -1) {
output.write(buffer, 0, read);
}
output.flush();
output.close();
stream.close();
// Handle the copied file
} catch (Exception e) {
e.printStackTrace();
}
}
}