AndroidStudio/Kotlin中在Android10及以上版本上无法将文件存储到外部存储
创始人
2024-10-10 21:30:49
0

在Android 10及以上版本上,应用不再有直接访问外部存储的权限。为了在这些版本上保存文件到外部存储,您需要请求用户授权,然后使用存储访问框架(Storage Access Framework)进行文件操作。

以下是一些示例代码,展示如何使用存储访问框架将文件保存到外部存储:

1.确保在manifest清单中声明所需的权限:

2.请求用户授权:

private fun requestPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION) startActivityForResult(intent, REQUEST_CODE_PERMISSION) } else { ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_CODE_PERMISSION) } }

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode == REQUEST_CODE_PERMISSION) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { writeFileToExternalStorage() } } }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == REQUEST_CODE_PERMISSION && resultCode == RESULT_OK) { val uri = data?.data if (uri != null) { contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION) writeFileToExternalStorage(uri) } } }

3.使用存储访问框架保存文件:

private fun writeFileToExternalStorage(uri: Uri? = null) { val filename = "test.txt" val content = "Hello World" val resolver = applicationContext.contentResolver val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, filename) put(MediaStore.MediaColumns.MIME_TYPE, "text/plain")

相关内容

热门资讯

据玩家消息!wepoker模拟... 据玩家消息!wepoker模拟器哪个,德普之星app安卓版破解版,总是确实有挂(确实有挂)1、点击下...
近期!we-poker软件,德... 近期!we-poker软件,德普之星有辅助软件吗,竟然真的是有挂(有挂透明挂)德普之星有辅助软件吗破...
黑科技辅助挂!德扑圈有透视吗,... 黑科技辅助挂!德扑圈有透视吗,德普之星辅助器,都是确实有挂(的确有挂)德扑圈有透视吗脚本下载中分为三...
据公告内容!悟空黑桃a辅助,德... 据公告内容!悟空黑桃a辅助,德扑之星透视辅助插件,切实是真的有挂(有挂功能)1、许多玩家不知道德扑之...
截至目前!hhpoker可以控... 截至目前!hhpoker可以控制牌吗,德普之星透视,一贯真的有挂(有挂教学)1、这是跨平台的德普之星...
据相关数据显示!哈糖大菠萝挂法... 据相关数据显示!哈糖大菠萝挂法,德普之星透视辅助,切实确实有挂(有挂实锤)德普之星透视辅助破解侠是真...
为了进一步!德普之星辅助器怎么... 为了进一步!德普之星辅助器怎么用,德扑之星透视辅助软件激活码,确实确实有挂(有挂猫腻)德扑之星透视辅...
据通报!拱趴大菠萝万能挂,如何... 据通报!拱趴大菠萝万能挂,如何下载德普之星辅助软件,总是真的是有挂(有挂总结)1、不需要AI权限,帮...
总结辅助挂!wejoker辅助... 总结辅助挂!wejoker辅助软件,德普之星透视辅助,其实存在有挂(有挂辅助)1、操作简单,无需德普...
最新消息!hhpoker买挂,... 最新消息!hhpoker买挂,德扑圈透视,竟然是有挂(存在有挂)1、上手简单,内置详细流程视频教学,...