当前位置: 首页 > news >正文

怎么查询网站是否被收录学网络营销网站建设好吗

怎么查询网站是否被收录,学网络营销网站建设好吗,安阳后营300一次贵不贵,商城网络推广这些天deepseek爆火#xff0c;我们来问问android问题看看#xff0c;如果问android中的应用怎么访问外部存储#xff0c;回答的很清楚#xff0c;但是如果问的深入一些#xff0c;比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的#xff0c;回答的比较抽…这些天deepseek爆火我们来问问android问题看看如果问android中的应用怎么访问外部存储回答的很清楚但是如果问的深入一些比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的回答的比较抽象只是给出了大概的分析方向。但还是可以从中受到启发。 android中的应用怎么访问外部存储 好的用户问的是“android中的应用怎么访问外部存储”。看起来他们可能已经对Android存储访问有一些了解但需要更详细的步骤或最新版本的适配方法。首先我需要回忆一下Android的存储权限变化特别是从Android 10引入的作用域存储Scoped Storage带来的影响。用户可能已经知道早期版本中使用Environment.getExternalStorageDirectory()的方法但现在需要适配新版本。 接下来用户可能想知道如何正确地在不同版本中访问外部存储包括如何请求权限、使用MediaStore访问媒体文件以及如何处理非媒体文件。他们可能遇到了在Android 10及以上版本中无法直接通过文件路径访问的问题所以需要指导如何使用Storage Access FrameworkSAF或者申请MANAGE_EXTERNAL_STORAGE权限。 另外用户可能对如何兼容旧版本和新版本感到困惑比如使用requestLegacyExternalStorage标记。需要解释这个标记的作用和适用条件以及何时应该放弃使用它转而遵循作用域存储的规范。 还需要考虑用户是否有特殊需求比如访问所有文件这时候需要提到MANAGE_EXTERNAL_STORAGE权限但也要提醒他们Google Play对使用此权限的限制避免滥用。此外用户可能关心如何安全地处理文件描述符避免资源泄漏尤其是在跨进程传递文件描述符时。 最后用户可能需要示例代码来具体实现各个步骤包括动态权限请求、使用MediaStore查询文件、通过SAF选择文件等。要确保示例代码简洁明了覆盖不同场景同时指出注意事项和常见问题比如权限拒绝处理、文件路径访问限制等。 在 Android 中访问外部存储如 SD 卡或共享存储空间需要遵循系统的权限规则和存储访问策略尤其是从 Android 10API 29 开始引入的 作用域存储Scoped Storage。以下是详细的访问方法及适配不同 Android 版本的步骤 1. 动态请求存储权限 根据 Android 版本请求对应的存储权限 权限声明AndroidManifest.xml xml !-- Android 13 媒体文件分类型权限 -- uses-permission android:nameandroid.permission.READ_MEDIA_IMAGES / uses-permission android:nameandroid.permission.READ_MEDIA_VIDEO / uses-permission android:nameandroid.permission.READ_MEDIA_AUDIO /!-- Android 10-12 通用媒体权限 -- uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /!-- 全文件访问权限需用户手动授权 -- uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE /动态请求权限代码 kotlin private fun checkStoragePermission() {val requiredPermissions if (Build.VERSION.SDK_INT Build.VERSION_CODES.TIRAMISU) {// Android 13 分类型媒体权限arrayOf(Manifest.permission.READ_MEDIA_IMAGES,Manifest.permission.READ_MEDIA_VIDEO)} else {arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)}if (requiredPermissions.all { permission -ContextCompat.checkSelfPermission(this, permission) PackageManager.PERMISSION_GRANTED}) {loadExternalFiles()} else {ActivityCompat.requestPermissions(this, requiredPermissions, REQUEST_CODE_STORAGE)} }override fun onRequestPermissionsResult(requestCode: Int, permissions: ArrayString, grantResults: IntArray) {super.onRequestPermissionsResult(requestCode, permissions, grantResults)if (requestCode REQUEST_CODE_STORAGE grantResults.all { it PackageManager.PERMISSION_GRANTED }) {loadExternalFiles()} } 2. 访问应用的私有目录 每个应用在外部存储中拥有独立的私有目录路径为 Android/data/包名/ 或 Android/obb/包名/。 代码示例 kotlin 复制 // 获取私有目录如 Downloads、Pictures 等子目录 val privateDir getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)// 创建或访问文件 val file File(privateDir, test.txt) file.writeText(Hello World!)// 卸载应用时系统会自动删除此目录 3. 访问公共媒体文件图片、视频、音频 使用 MediaStore API 访问公共媒体文件这是 Android 10 的推荐方式。 查询图片文件示例 kotlin 复制 val projection arrayOf(MediaStore.Images.Media._ID,MediaStore.Images.Media.DISPLAY_NAME,MediaStore.Images.Media.DATE_ADDED )val sortOrder ${MediaStore.Images.Media.DATE_ADDED} DESCcontentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,projection,null,null,sortOrder )?.use { cursor -while (cursor.moveToNext()) {val id cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID))val uri ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id)// 通过 Uri 读取文件val inputStream contentResolver.openInputStream(uri)// 处理文件流...} } 4. 访问非媒体文件文档、下载目录等 使用 Storage Access Framework (SAF) 让用户主动选择文件或目录。 代码示例 kotlin 复制 // 打开文档选择器 val intent Intent(Intent.ACTION_OPEN_DOCUMENT).apply {addCategory(Intent.CATEGORY_OPENABLE)type */* // 允许选择任意类型文件 } startActivityForResult(intent, REQUEST_CODE_OPEN_DOCUMENT)// 处理返回的 Uri override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (requestCode REQUEST_CODE_OPEN_DOCUMENT resultCode RESULT_OK) {data?.data?.let { uri -// 通过 Uri 读取文件contentResolver.openInputStream(uri)?.use { stream -// 读取文件内容...}}} } 5. 访问所有文件需特殊权限 从 Android 11API 30 开始需申请 MANAGE_EXTERNAL_STORAGE 权限并跳转系统设置。 代码示例 kotlin 复制 // 检查是否已授权 if (Environment.isExternalStorageManager()) {// 已授权可访问所有文件val files File(/sdcard).listFiles() } else {// 跳转到系统设置页val intent Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)startActivity(intent) } 6. 兼容旧版本Android 9 及以下 若需临时禁用作用域存储可在 AndroidManifest.xml 中添加 requestLegacyExternalStorage。 xml 复制 applicationandroid:requestLegacyExternalStoragetrue... /application 运行 HTML 注意 仅当 targetSdkVersion 30 时有效。 Google Play 可能对使用此标记的应用进行审核。 关键限制 禁止直接路径访问 Android 10 禁止通过 File 类直接访问非媒体文件如 /sdcard/Download/file.txt。 其他应用私有目录不可见 /sdcard/Android/data/其他应用包名 对其他应用完全隔离。 总结 场景方法应用私有文件getExternalFilesDir()公共媒体文件MediaStore API 动态权限非媒体文件Storage Access Framework (SAF)全文件访问MANAGE_EXTERNAL_STORAGE 权限需用户手动授权旧版本兼容requestLegacyExternalStorage仅限 targetSdkVersion 30 开发者应优先使用 MediaStore 和 SAF避免依赖绝对路径以确保应用兼容未来 Android 版本。 问 Android中是怎么控制让应用不能读取其他应用的外部存储文件的 嗯用户之前问过几次关于Android应用如何访问外部存储的问题现在他们又问Android是如何控制应用不能读取其他应用的外部存储文件的。看起来用户对Android的存储权限机制和隔离措施很感兴趣可能是开发者或者安全研究人员想深入了解系统底层的安全机制。 首先我需要回顾之前的对话历史用户已经了解了作用域存储、权限模型、文件路径隔离等内容。用户现在可能想知道更具体的技术实现比如系统是如何在底层限制应用访问其他应用的数据的。 接下来我需要考虑如何详细解释这些控制机制。可能需要从Linux文件权限、进程隔离、SELinux策略、虚拟文件系统等方面展开。同时用户可能对具体的技术细节感兴趣比如UID/GID如何分配文件描述符的传递机制以及Binder在跨进程通信中的作用。 用户之前的问题中提到了HIDL和文件描述符的传递这可能意味着他们对底层IPC机制有一定了解。所以在回答时可以适当深入这些方面但也要保持清晰易懂避免过于晦涩。 另外用户可能想知道这些机制在不同Android版本中的差异比如Android 10之后的作用域存储如何强化了这些限制。需要分版本说明特别是Android 10和11的变化。 还要注意用户可能的误区比如认为拥有存储权限就可以访问所有文件但实际上作用域存储限制了这一点。需要澄清权限和路径访问的关系以及系统如何通过组合权限检查和文件系统隔离来实现控制。 最后确保回答结构清晰分点说明用技术术语但不过于复杂同时举例子帮助理解。比如通过示例说明应用A尝试访问应用B的私有目录时系统如何拦截并阻止。 在 Android 中系统通过 多层级的安全机制 实现应用之间外部存储文件的隔离确保一个应用无法随意读取其他应用的外部存储文件。这些机制结合了 Linux 文件系统权限、沙盒隔离、权限模型和虚拟化技术以下是具体实现原理 1. Linux 文件系统权限 Android 基于 Linux 内核继承其文件系统的权限控制 UID/GID 隔离 每个应用在安装时会被分配一个唯一的 用户 IDUID 和 组 IDGID。 应用私有目录如 /sdcard/Android/data/包名的权限默认设置为 0700仅允许所属 UID 读写。 其他应用因 UID 不同无法直接通过文件路径访问这些目录。 权限位控制 公共目录如 /sdcard/DCIM的权限通常为 0777所有用户可读写但通过 作用域存储 限制应用的实际访问能力。 2. 作用域存储Scoped StorageAndroid 10 从 Android 10 开始引入进一步限制应用对外部存储的访问 虚拟文件系统FUSE Android 使用 FUSE用户态文件系统 或 Samsung RFS 对 /sdcard 路径进行虚拟化。 应用看到的 /sdcard 是一个虚拟视图仅包含 自身私有目录Android/data/包名。 通过 MediaStore 授权的公共媒体文件图片、视频、音频。 用户通过 Storage Access Framework (SAF) 主动授权的文件。 路径过滤 当应用尝试访问 /sdcard/Android/data/其他应用包名 时虚拟文件系统直接返回 文件不存在ENOENT。 即使应用拥有 READ_EXTERNAL_STORAGE 权限也无法绕过此限制。 3. 权限模型Runtime Permissions 存储权限分级 READ_EXTERNAL_STORAGE允许读取公共媒体文件Android 13 后细化为 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO 等。 WRITE_EXTERNAL_STORAGE允许写入公共媒体文件Android 10 后逐渐废弃。 MANAGE_EXTERNAL_STORAGE允许访问所有文件需用户手动授权Google Play 审核严格。 动态权限检查 应用在访问公共目录时系统会在 VFS虚拟文件系统层 隐式检查权限状态。 若未授权即使通过 File 类尝试访问文件也会返回 权限错误SecurityException。 4. 进程隔离与 SELinux 沙盒机制 每个应用运行在独立的进程空间拥有自己的 UID 和 SELinux 上下文。 SELinux 策略严格限制应用进程只能访问其所属的文件和目录。 Binder IPC 限制 跨进程文件访问需通过 Binder 传递文件描述符ParcelFileDescriptor系统会在 IPC 过程中检查权限和所有权。 5. 合法访问途径 若应用需共享文件必须通过以下 显式授权机制 ContentProvider 应用 A 实现 ContentProvider通过 URI如 content://com.appA.provider/file1共享文件。 应用 B 需通过 ContentResolver 查询 URI并拥有对应的权限如 android:readPermission。 FileProvider 生成临时 URI如 content://com.appA.fileprovider/files/file1通过 Intent 传递给其他应用。 临时 URI 可设置有效期和权限接收方应用需通过 ContentResolver 访问。 Storage Access Framework (SAF) 用户通过系统文件选择器如 Intent.ACTION_OPEN_DOCUMENT主动授权访问特定文件或目录。 6. 示例阻止访问的完整流程 假设 应用 A 尝试读取 应用 B 的私有文件 /sdcard/Android/data/com.appB/files/secret.txt 路径解析 应用 A 调用 new File(/sdcard/Android/data/com.appB/files/secret.txt)。 虚拟文件系统拦截 FUSE 发现路径属于其他应用的私有目录直接返回 文件不存在即使文件实际存在。 权限检查 若应用 A 尝试绕过虚拟路径如直接操作 /data/media/...SELinux 会阻止访问。 进程隔离 即使应用 A 获取了 MANAGE_EXTERNAL_STORAGE 权限系统仍会限制其访问其他应用的私有目录。 7. 绕过限制的例外情况 ROOT 设备 拥有 Root 权限的应用可绕过所有限制但普通用户设备极少开放 Root。 系统应用 系统签名应用如预装文件管理器可能拥有更高权限但需通过 Google 认证。 总结 Android 通过以下组合机制实现应用间外部存储的隔离 机制作用Linux 文件权限基于 UID/GID 的目录隔离作用域存储FUSE虚拟化文件路径隐藏其他应用的私有目录运行时权限模型动态检查存储权限限制公共目录访问SELinux 策略强制进程隔离禁止跨应用文件操作安全的文件共享 API强制通过 ContentProvider、FileProvider 或 SAF 显式授权 开发者应始终使用系统提供的 API如 MediaStore、SAF访问文件避免直接操作路径以确保兼容性和安全性。
http://www.hkea.cn/news/14564935/

相关文章:

  • 网站 支付宝 接口外贸营销型网站策划中seo层面包括
  • 内网建站软件软件开发工具包可以卸载吗
  • 二手的家具哪个网站做的好科技袁人袁岚峰
  • 做公司网站要注意哪些问题昆明住房和城乡建设部网站
  • 寻乌建设局网站南宁免费自助建站模板
  • 长春网站建设方案深圳做营销型网站
  • 免费做优化的网站建设电子产品网页设计
  • 网站建设自适应网站在linux上做网站搭建
  • 公共网站怎地做查看网站外链代码
  • 设计网站的优缺点分析提供网站建设制作
  • 在线编程的网站局部装修改造找哪家装修公司
  • 中山网站建设推荐爬虫 做资讯网站
  • 网站线框图用什么做珠海网站建设哪家公司好
  • 宁波市住房与城乡建设部网站网页设计外文文献
  • 对于做房产做网站的感悟wordpress 代码框
  • 网站首页的布局方式html教程w3school
  • 长沙医疗网站建设uniapp商城app整套源码
  • 怎么修改别人做的网站施工企业应建立的安全健康与环境管理制度包括
  • 用虚拟机做服务器搭建网站有哪些做的好的网站
  • pc网站与手机网站为什么进不了中国建设银行网站
  • 优秀企业网站模板企业建设项目哪个网站可以查
  • 自己的网站到期域名如何续费北京网站建设搜q.479185700
  • 网站策划书主题网站建设有哪些问题
  • 企业网站设计欣赏wordpress 幻灯片
  • 赣州网站网站建设常见网页制作工具
  • 合肥网站制作方案做网站 华普花园
  • 做58网站怎么赚钱网站怎么做图片按按钮跳转
  • 杭州电子商务网站建设公司wordpress 基础建站
  • 代制作网站网站建设端口
  • 济南做网站推广有哪些公司网站建设最低价