在Android API中访问外部存储29

Alceatraz

我正在尝试实现一些清理工具。由于某些“安全原因”,越来越多的制造商已禁止生根设备,禁止不要求解锁。

在API 28之后,此代码将产生错误:


ActivityCompat.requestPermissions(this, new String[]{
  Manifest.permission.READ_EXTERNAL_STORAGE,
  Manifest.permission.WRITE_EXTERNAL_STORAGE
}, 1); // Request permission or not, Will got same result

File rootFolder = Environment.getExternalStorageDirectory(); // That is working fine
rootFolder.listFiles(); // That will return null

当然可以使用:

android:requestLegacyExternalStorage="true"

但是我相信将来会被杀死。

那么,有什么优雅的方法可以管理SDCard吗?

blackapps

在Android 10上Environment.getExternalStorageDirectory()Environment.getExternalStoragePublicDirectory()它将返回存储路径,但是路径不可读或不可写。

  1. 对于Android 10,如果您android:requestLegacyExternalStorage="true"在清单文件中添加到应用程序标签,则可以继续使用Environment.getExternalStorageDirectory()和Environment.getExternalStoragePublicDirectory()提供的路径在运行时,您的应用可以调用Environment.isExternalStorageLegacy()以检查请求是否已完成。

  2. 另一种(未知)可能性(仅适用于Android 10)是添加<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />到清单文件中。用户必须转到应用程序的高级设置并从中启用Advanced settings Install unknown apps | Allow from this source这样做的好处是用户可以切换访问权限。如果您实现了用户Settings.ACTION_APPLICATION_DETAILS_SETTINGS可以更改设置的意图,则可以使用户更轻松有趣的是,Environment.isExternalStorageLegacy()也会返回true。

  3. 针对Android 11编译这两个选项在Android 11设备上均不起作用。(但它们继续适用于Android 10设备)。Environment.getExternalStorageDirectory()和Environment.getExternalStoragePublicDirectory()的路径为usable again in read mode and very often in write mode too这很棒,因为可以使用File类再次简单地列出目录(如Download或Pictures或DCIM / Camera)的内容。但是,添加<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />到清单文件并实现意图后,Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION即使在可移动Micro SD卡上,您的应用也可以对所有文件进行读/写访问。(最后,您可以删除Google禁止,无法使用自己的应用在自己的Android设备上读取/写入自己的Micro SD卡)。Environment.isExternalStorageManager()可用于检查权限是否为开/关。只要您不尝试将应用上传到Play商店,就可以了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android中访问外部存储卡

来自分类Dev

如何在Android 10中访问外部存储?

来自分类Dev

如何在Android中访问外部存储卡

来自分类Dev

无法访问 Android 外部存储中的文件

来自分类Dev

在 Android 中访问内部存储

来自分类Dev

以编程方式测试是否在Android 10+中禁用了旧版外部存储访问

来自分类Dev

Libgdx Android SDK访问外部Web API

来自分类Dev

将位图保存到Android API 28中的外部存储中,结果为0 B文件

来自分类Dev

获取Android 4.3中的外部存储列表

来自分类Dev

从Android中的外部存储获取文件路径

来自分类Dev

从Android中的UI线程外部访问GoogleMap

来自分类Dev

我如何在android中写出api leves> 19的外部存储器?

来自分类Dev

在根目录下的Android设备中访问和操作外部USB存储设备上的文件和目录

来自分类Dev

Android读取外部存储在Android Kitkat中不起作用

来自分类Dev

在Android存储设备中创建,存储和访问文件?

来自分类Dev

如何从Android 5中的外部存储中删除文件

来自分类Dev

在Android Q中替换ContentResolver查询中的“ GROUP BY”(对Android 10,API 29进行了更改)

来自分类Dev

应用中的Android打开外部存储文件夹

来自分类Dev

无法在外部存储Android中创建目录

来自分类Dev

如何从Android 5中的外部存储删除文件

来自分类Dev

从android中的listAdapter外部的viewList访问视图项

来自分类Dev

Java android访问外部类中内部类的成员字段

来自分类Dev

如何使用Android访问存储在Bluemix Object Storage中的文件?

来自分类Dev

在Android中访问USB大容量存储设备

来自分类Dev

使用Android WebView中的本地存储拒绝访问

来自分类Dev

Android Wear:如何在WearableListenerService中存储数据并访问它们?

来自分类Dev

如何在Android NDK中访问USB大容量存储

来自分类Dev

Android外部存储路径结构

来自分类Dev

Android外部存储与SD卡

Related 相关文章

  1. 1

    如何在Android中访问外部存储卡

  2. 2

    如何在Android 10中访问外部存储?

  3. 3

    如何在Android中访问外部存储卡

  4. 4

    无法访问 Android 外部存储中的文件

  5. 5

    在 Android 中访问内部存储

  6. 6

    以编程方式测试是否在Android 10+中禁用了旧版外部存储访问

  7. 7

    Libgdx Android SDK访问外部Web API

  8. 8

    将位图保存到Android API 28中的外部存储中,结果为0 B文件

  9. 9

    获取Android 4.3中的外部存储列表

  10. 10

    从Android中的外部存储获取文件路径

  11. 11

    从Android中的UI线程外部访问GoogleMap

  12. 12

    我如何在android中写出api leves> 19的外部存储器?

  13. 13

    在根目录下的Android设备中访问和操作外部USB存储设备上的文件和目录

  14. 14

    Android读取外部存储在Android Kitkat中不起作用

  15. 15

    在Android存储设备中创建,存储和访问文件?

  16. 16

    如何从Android 5中的外部存储中删除文件

  17. 17

    在Android Q中替换ContentResolver查询中的“ GROUP BY”(对Android 10,API 29进行了更改)

  18. 18

    应用中的Android打开外部存储文件夹

  19. 19

    无法在外部存储Android中创建目录

  20. 20

    如何从Android 5中的外部存储删除文件

  21. 21

    从android中的listAdapter外部的viewList访问视图项

  22. 22

    Java android访问外部类中内部类的成员字段

  23. 23

    如何使用Android访问存储在Bluemix Object Storage中的文件?

  24. 24

    在Android中访问USB大容量存储设备

  25. 25

    使用Android WebView中的本地存储拒绝访问

  26. 26

    Android Wear:如何在WearableListenerService中存储数据并访问它们?

  27. 27

    如何在Android NDK中访问USB大容量存储

  28. 28

    Android外部存储路径结构

  29. 29

    Android外部存储与SD卡

热门标签

归档