
Android
ACTION_GET_CONTENT 和 ACTION_OPEN_DOCUMENT 是 Android 平台上用于选择和打开文件的两种常见 Intent。虽然它们看起来很相似,但它们之间有一些重要的区别。
首先,ACTION_GET_CONTENT 主要用于选择文件内容,而 ACTION_OPEN_DOCUMENT 则主要用于打开文件。也就是说,前者更关注文件的内容,而后者更关注文件本身。使用 ACTION_GET_CONTENT 可以让用户从设备上的任何文件浏览器应用程序中选择一个文件。这个 Intent 可以用于选择多种类型的文件,包括图片、视频和音频文件等。而 ACTION_OPEN_DOCUMENT 则更适用于打开特定类型的文件,例如文档和电子表格等。另一个区别是在权限上。ACTION_GET_CONTENT 使用的是 READ_EXTERNAL_STORAGE 权限,而 ACTION_OPEN_DOCUMENT 使用的是 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。这意味着使用 ACTION_OPEN_DOCUMENT 可以更加灵活地操作文件,包括对文件进行读写操作。下面是一个简单的案例代码,演示了如何使用 ACTION_GET_CONTENT 和 ACTION_OPEN_DOCUMENT 来选择和打开文件:Java// ACTION_GET_CONTENT 示例代码public void pickFile() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); // 选择所有类型的文件 startActivityForResult(intent, PICK_FILE_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK) { Uri uri = data.getData(); // 处理选择的文件 }}// ACTION_OPEN_DOCUMENT 示例代码public void openFile() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.setType("application/pdf"); // 打开 PDF 文件 startActivityForResult(intent, OPEN_FILE_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == OPEN_FILE_REQUEST && resultCode == RESULT_OK) { Uri uri = data.getData(); // 打开选择的文件 }}区别: ACTION_GET_CONTENT 和 ACTION_OPEN_DOCUMENT 的区别使用 ACTION_GET_CONTENT使用 ACTION_GET_CONTENT 可以让用户从设备上的任何文件浏览器应用程序中选择一个文件。这个 Intent 可以用于选择多种类型的文件,包括图片、视频和音频文件等。Java// ACTION_GET_CONTENT 示例代码public void pickFile() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); // 选择所有类型的文件 startActivityForResult(intent, PICK_FILE_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK) { Uri uri = data.getData(); // 处理选择的文件 }}使用 ACTION_OPEN_DOCUMENT使用 ACTION_OPEN_DOCUMENT 可以选择特定类型的文件,例如文档和电子表格等。ACTION_OPEN_DOCUMENT 使用的是 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。Java// ACTION_OPEN_DOCUMENT 示例代码public void openFile() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.setType("application/pdf"); // 打开 PDF 文件 startActivityForResult(intent, OPEN_FILE_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == OPEN_FILE_REQUEST && resultCode == RESULT_OK) { Uri uri = data.getData(); // 打开选择的文件 }}ACTION_GET_CONTENT 和 ACTION_OPEN_DOCUMENT 是 Android 平台上用于选择和打开文件的两种常见 Intent。它们之间的区别在于选择文件内容和打开文件的重点不同,以及所需的权限不同。根据需要选择适合的 Intent,并根据返回的数据进行相应的处理。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号