android-file 相关问题

特别是Android`File`类,但也可以参考Android操作系统下的文件的通用概念

通过USB OTG获取连接的USB驱动器的可用空间

使用 StorageManager,我们可以访问通过 USB OTG 连接到 Android 智能手机的可移动闪存驱动器: val storageManager = context.getSystemService(Context.STORAGE_SERVICE) 作为 StorageManager

回答 1 投票 0

Android 11(30 API)File.listFiles() 不返回所有文件

所以我测试了29和30个Android API设备。两者都有包含 5 个文件的下载文件夹(两台设备相同)。 应用程序有 所以我测试了 29 和 30 个 Android API 设备。两者都有包含 5 个文件的下载文件夹(两台设备相同)。 应用程序在清单中有 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 并在运行时请求它。 还包括android:requestLegacyExternalStorage="true"(仅适用于Android 10,Android 11忽略它) private fun init() { val path = File(Environment.getExternalStorageDirectory(), "Download") val files = path.listFiles() Timber.d("Android API ${Build.VERSION.SDK_INT}, dirFiles \n${files?.joinToString(separator = "\n") { it.name }}") } Android 11(30 SDK): 2021-10-06 23:40:52.182 9022-9022/com.example.tests D/MainActivity: Android API 30, dirFiles Elephants Dream.srt Elephants Dream.mkv Android 10(29 SDK): 2021-10-06 23:45:51.835 8293-8293/com.example.tests D/MainActivity: Android API 29, dirFiles Elephants Dream.srt Elephants Dream.ssa Elephants Dream.vtt Elephants Dream.ass Elephants Dream.mkv 如您所见,Android 11 并未使用 File.listFiles() 方法返回所有文件。 它通过某些媒体过滤器在系统级别过滤文件。附注MediaStore游标查询返回相同的有限结果 它识别srt格式的字幕文件是媒体类型,但ssa、vtt或ass字幕文件不是媒体! 很奇怪的逻辑。 ssa、vtt、ass也是字幕! 对于 Android 10 读取或写入存储权限在设置中如下所示: 对于 Android 11 读取或写入存储如下所示: 我有一个视频播放器应用程序,它必须支持多种字幕格式,但我只能在 Android 11 上获得 srt。 如何获取所有需要的文件? 更新 似乎 Android 11 的唯一方法是 请求所有文件访问权限 https://developer.android.com/training/data-storage/manage-all-files#all-files-access 但是要获得Google的批准将会是一个挑战 我们可以使用 SAF(存储访问框架),但它对于 Android 11 有很多限制 https://developer.android.com/training/data-storage/shared/documents-files#document-tree-access-restrictions VLC 媒体播放器现在使用 android.permission.MANAGE_EXTERNAL_STORAGE(所有文件访问)权限 https://github.com/videolan/vlc-android/blob/89c2deb5fd4983dd64e0e55bc5ab8e559612c9d9/application/vlc-android/AndroidManifest.xml#L12 因此,这是访问所有类型/格式的字幕和视频的唯一方法,但如果 Google 允许并批准您的应用程序的此类权限,那么这是唯一的问题。 通常此权限可以在文件浏览器、防病毒扫描等应用程序中使用,没有任何问题,但官方文档没有提及媒体播放器。 有新的媒体权限(针对视频、音频、图像),但它们没有用,视频媒体权限看不到所有可用的视频格式,只能看到一般的视频格式,并且没有字幕权限,因此应用程序可以访问 srt、ass、 vtt等格式的字幕。 因此,具有所有文件访问权限的 VLC 应用程序更新已获得 Google 批准,但正如我之前在评论中所说,我的视频播放器应用程序被拒绝。 VLC 和我的应用程序都使用 libVLC 来播放不同格式的视频和字幕,但权限不能被同一类别的每个应用程序使用... https://developer.android.com/training/data-storage/manage-all-files 这个解决方案对我有用。 在清单中添加权限: <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/> 在 Activity 的 onStart() 方法中,放置动态请求权限: @Override protected void onStart() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) { Uri uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID); Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.getApplicationContext().startActivity(intent); } super.onStart(); }

回答 2 投票 0

如何打开GmsDocumentScanningResult.Pdf

我想使用我的默认 PDF 应用程序打开 GmsDocumentScanningResult.Pdf 对象。 我尝试过以下方法: resultIntent?.pdf?.let { pdf: GmsDocumentScanningResult.Pdf -> val pdfUri = pdf...

回答 1 投票 0

如何在android API 37中复制文件?

我正在制作一个应用程序,我需要将图像从一个文件夹复制到android本地存储中的另一个文件夹。我尝试过使用 Apache 库、流、FileChannel 等。基本上,我拥有的所有解决方案

回答 1 投票 0

在旧的 Android 设备上写入二进制数据很慢

我想知道是否有人可以提供任何建议来提高旧企业 Android 5.1 设备上二进制数据写入的性能。 FileOutputStream fileOutputStream = new FileOutputStream(

回答 1 投票 0

Android 模拟器镜像存储在哪里?

在模拟器上,我从Google下载了一张图片。我可以在模拟器上找到该图像,但我不知道该图像的文件位置是什么。要调试我的应用程序,我需要知道该图像在哪里......

回答 9 投票 0

DocumentFile.canWrite()、DocumentFile.exists() - 使用本地内置手机存储(而非云)时性能较差(占用太多 CPU 时间)

我不太确定,但是为什么在使用内置手机外部存储(不是云)时,与文件相比,存在以下 DocumentFile 和 canWrite 函数需要太多 CPU 时间? 我...

回答 1 投票 0

我在Android 13版本手机上无法检索文件上传的真实路径

我使用此对象从所选文件的 URI 中获取其真实路径: 对象 RealPathUtil { fun getRealPath(context: Context, fileUri: Uri): 字符串? { val realPath:字符串? // SDK < A...

回答 1 投票 0

来自 Intent.ACTION_OPEN_DOCUMENT 提供的 Android URI 的文件上次修改时间

我需要编写一个Android应用程序来观察另一个应用程序何时修改文件,然后从中读取数据。该文件由用户选择。所以我想使用 Intent 以及文件选择器是什么

回答 3 投票 0

Android,如何获取文件夹中所有文件的列表?

我需要 res/raw/ 目录中所有文件的名称(字符串)。 我试过: 文件 f = 新文件(“/”); String[] someFiles = f.list(); 看起来根目录就是android的根目录

回答 7 投票 0

Android,如何获取文件夹中所有文件的列表?

我需要 res/raw/ 中所有文件的名称(字符串) 我试过: 文件 f = 新文件(“/”); String[] someFiles = f.list(); 看起来根目录是android模拟器的根目录...而不是我的

回答 7 投票 0

Android - 与文件管理器共享意图作为选项

我想要以下功能: 在我的应用程序的内部存储中,我有一个文件,用户应该能够将其保存到另一个应用程序(例如 Google Drive)或将其保存到手机的外部存储...

回答 1 投票 0

读取/写入文件到内部私有存储

我正在将应用程序从 Symbian/iPhone 移植到 Android,其中一部分是将一些数据保存到文件中。我使用 FileOutputStream 将文件保存到私有文件夹 /data/data/package_name/fil...

回答 5 投票 0

通过设备文件资源管理器和默认文件管理器应用程序了解和访问 Android 目录

(1) Device File Explorer 的用途是什么?它像第三方应用程序吗? (2) 对于路径 1:/storage/emulated/0/Android/data 为什么我在 Android 的设备文件资源管理器中获得拒绝权限

回答 0 投票 0

在 Android 中删除文件

我有一个包含很多文件的目录。我想删除整个目录以及其中的所有文件。 我希望我的代码等到该目录中的每个文件(包括可怕的...

回答 3 投票 0

如何在 android 中获取存储目录的路径

有什么方法可以获取/storage/目录。我尝试使用 Environment.getExternalStorageDirectory() 但它返回 /storage/emulated/0 我知道我可以使用 file.getParent() 但出于某种原因我可以......

回答 1 投票 0

如何创建文件夹(Android R - Api 30)?

读到 Android 11 有范围存储,但我找不到任何信息,如何在 /storage/emulated/0/ 中创建和使用文件夹?旧方法仅适用于 api 29 及以下 :(

回答 4 投票 0

如何使用 Retrofit2 上传应用程序不拥有且只有 Uri 具有读取权限的文件

现在,当我从我的应用程序中选择要上传的文件时,例如照片 私有 val imageFileFromGalleryPickResult = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) {

回答 1 投票 0

如何在 Android 中以编程方式将图像文件从图库复制到另一个文件夹

我想从图库中选择图像并将其复制到 SDCard 中的其他文件夹中。 从图库中选择图像的代码 Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("

回答 6 投票 0

我无论怎么做都无法保存相机拍摄的图像。我该怎么做呢?

我已经按照这个Android官方网站上的所有内容进行了操作。我在代码中把createTempFile()的路径存储在currentImagePath中。打印时,显示了路径。但是,好像...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.