Android13-在没有MANAGE_EXTERNAL_STORAGE权限的情况下访问自己的文件,如固件、数据日志
创始人
2024-10-01 00:00:55
0

使用MediaStore API

在Android 10及以上版本中,MANAGE_EXTERNAL_STORAGE权限被标记为危险权限,需要用户授予。但是应用程序可能需要访问它们自己的文件,如固件、数据日志等,而不需要该权限。为了解决这个问题,可以使用MediaStore API。

MediaStore API提供了对Android设备上存储媒体文件的访问。它不需要MANAGE_EXTERNAL_STORAGE权限,并且可以让您在没有该权限的情况下访问自己的文件。以下是一个示例代码:

val projection = arrayOf(
    MediaStore.MediaColumns.DISPLAY_NAME,
    MediaStore.MediaColumns.SIZE,
    MediaStore.MediaColumns.DATE_ADDED,
    MediaStore.MediaColumns.MIME_TYPE,
    MediaStore.MediaColumns.DATA
)

val selection = "${MediaStore.MediaColumns.DATA} like '%/my_app_folder/%'"
val sortOrder = "${MediaStore.MediaColumns.DATE_ADDED} DESC"

val cursor = contentResolver.query(
    MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
    projection,
    selection,
    null,
    sortOrder
)

if (cursor != null && cursor.moveToFirst()) {
    val displayNameIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME)
    val sizeIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)
    val dateAddedIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATE_ADDED)
    val mimeTypeIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.MIME_TYPE)
    val dataIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)

    do {
        val displayName = cursor.getString(displayNameIndex)
        val size = cursor.getLong(sizeIndex)
        val dateAdded = cursor.getLong(dateAddedIndex)
        val mimeType = cursor.getString(mimeTypeIndex)
        val data = cursor.getString(dataIndex)

        Log.d("TAG", "File name: $displayName")
        Log.d("TAG", "File size: $size")
        Log.d("TAG", "File added: $dateAdded")
        Log.d("TAG", "File MIME type: $mimeType")
        Log.d("TAG", "File path: $data")
    } while (cursor.moveToNext())
}

cursor?.close()

该示例将查询存储在“/my_app_folder/”文件夹中的所有文件,并输出其名称、大小、添加日期、MIME类型和路径。该查询将返回该应用程序拥有的文件,而不需要MANAGE_EXTERNAL_STORAGE权限。

相关内容

热门资讯

德州之星外挂!wpk微扑克真的... 德州之星外挂!wpk微扑克真的有辅助(透视)从前是真的有挂(详细辅助黑科技教程)1、不需要AI权限,...
透视实锤!wpk辅助器安装,w... 透视实锤!wpk辅助器安装,wpk俱乐部是做什么的(详细辅助透明挂教程)1、wpk辅助器安装系统规律...
WePoKe透明挂!wpk微扑... WePoKe透明挂!wpk微扑克辅助ai(透视)其实有挂(详细辅助wepoke教程)(1)WePoK...
透视神器!wpk透视辅助靠谱吗... 透视神器!wpk透视辅助靠谱吗,wepoker国外版透视(详细辅助AI教程)1、这是跨平台的wpk透...
wepoke有挂!nzt德州辅... wepoke有挂!nzt德州辅助(透视)一直存在有挂(详细辅助专业教程)1、金币登录送、破产送、升级...
透视插件!wepoker透视脚... 透视插件!wepoker透视脚本网页,wepoker免费辅助器(详细辅助透牌教程)1、金币登录送、破...
微扑克游戏辅助器!红龙扑克模拟... 微扑克游戏辅助器!红龙扑克模拟器(透视)原生真的是有挂(详细辅助技巧教程)(1)微扑克游戏辅助器!红...
透视攻略!wpk辅助插件,we... 透视攻略!wpk辅助插件,wepoker轻量版透视(详细辅助2025新版教程);在进入wpk辅助插件...
wepoke辅助有挂!aa p... 您好,wepoke辅助有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
透视挂!智星德州菠萝安装,we... 透视挂!智星德州菠萝安装,wepoker辅助软件视频(详细辅助详细教程);1、玩家可以在智星德州菠萝...