展开

关键词

Android | 作用存储适配

前言 Android 10 已经发布了很长一段时间了,并且 Android 11 已经有很大一部分人在使用了,那么你的程序对他做了适配吗? 在 10.0 中,作用存储变得非常重要,这个新的功能颠覆了我们一直惯用外置存储的方式,因此大量的 app 都面临着代码的适配 本篇文章对作用存储,以及如何进行适配,做了比较详细的介绍 在 7.0 作用存储 ​ 10.0 中,为了解决上述问题, google 在 Android 10 中加入了作用功能 ​ 什么是作用呢? 就是 Android 系统对 SD 卡做了很大的限制,从 10.0 开始,每个程序只能有权在自己的外置存储空间关联的目录下读取和创建相应的文件,也称作沙箱。 权限,WRITE_EXTERNAL_STORAGE 权限会在未来的版本中被废弃。

7820

Android 10适配要点,作用存储

本篇文章对作用存储进行了比较全面的解析,相信看完之后你将能够轻松地完成Android 10作用存储的适配升级。 理解作用存储 Android长久以来都支持外置存储空间这个功能,也就是我们常说的SD卡存储。 那么到底什么是作用存储呢?简单来讲,就是Android系统对SD卡的使用做了很大的限制。 而在作用存储这个功能上面,恭喜大家,暂时确实是可以不用升级的。 目前Android 10系统对于作用存储适配的要求还不是那么严格,毕竟之前传统外置存储空间的用法实在是太广泛了。 第三方SDK不支持作用存储怎么办? 阅读完了本篇文章之后,相信你对Android 10作用存储的用法和适配基本上都已经掌握了。

99110
  • 广告
    关闭

    对象存储COS专场特惠,1元礼包限时抢

    一站式解决数据备份、共享、大数据处理、线上数据托管的云端存储服务,新用户享四重好礼

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    存储类型和变量的作用(C语言)

    1、数据在内存中的存储 在计算机中,用于存程序和数据的物理单元有寄存器和随机存储器(RAM)。寄存器速度快,空间少,常常只存放参加运算的少数变量。RAM比寄存器速度慢,但空间大,可存放程序和一般数据。 存储在堆栈区,从存储位置划分,属于内存变量;从变量的生存期划分,属于动态存储变量。 static型变量一般存储在数据区,该变量创建后,随着文件的存在而存在。 存储在内存的应用区,程序运行时一直存在。 extern int num = 10;void main(){ printf("%d", num);} 3、变量的作用和生存期 作用和生存期总结为下面这张表: ?

    34540

    Android 和 Hilt 中限定作用

    Android 中,您不使用 DI 库也可以通过 Android Framework 来手动限定作用。让我们看看如何手动限定作用,以及如何改用 Hilt 来限定作用。 最后,我们将比较使用 Android Framework 手动限定作用和使用 Hilt 限定作用的区别。 在 Android 中限定作用 看了上文的定义,您可能会有这样的异议: 在某个特定类中使用一个类型的实例变量也可以做到限定该变量类型的作用。没错! 因为 Activity 具有 ViewModel 的访问权限,所以在该 Activity 中可以始终获得相同的 AnalyticsAdapter 实例。 当然,当您需要限定作用时,您可以使用 Hilt 中的作用注解,也可以直接使用 Android Framework。

    24720

    Android 11 中的存储机制更新

    Android 10 引入了对外部存储权限的更改,旨在更好地保护用户数据以及降低应用的存储空间。Android 11 开发者预览版里加入了更多改进,以帮助开发者更好地适应这些权限修改。 在 Android 10 中,我们调整了存储权限的工作方式,仅为应用提供其所需的访问权限。这也是在鼓励应用在指定目录下进行文件存储以限制文件混乱。当应用被卸载后,这些相关的目录也会被删除。 在 Android 11 中,我们会通过下述的几点来继续优化分区存储 (Scoped Storage) 的开发者体验。 Android 10 对外部存储权限行为 developer.android.google.cn/training/da… 改进媒体存储 Android 10 中要求所有应用都使用 MediaStore Android 11 里将会引入一个特别的权限叫做 MANAGE_EXTERNAL_STORAGE,该权限将授权读写所有共享存储内容,这也将同时包含非媒体类型的文件。

    1.7K11

    Android内部存储改变读取权限的方法

    在开发时,手机先要ROOT,然后在通过代码改变权限。 System.out.println("###root cmd error:"+e); } } return true; }</span 引用时需要注意加入权限 : getRoot("chmod -R 777 /data/data/com.xxxxx/databases/wa.db"); 以上这篇Android内部存储改变读取权限的方法就是小编分享给大家的全部内容了

    23610

    Android 10(Q)11(R) 分区存储适配

    为此,Google 终于下定决心在 Android 10 中引入了分区存储,对权限进行场景的细分,按需索取,并在 Android 11 中进行了进一步的调整。 Android 存储分区情况 Android存储可以分为两大类:私有存储和共享存储 私有存储 (Private Storage) : 每个应用在都拥有自己的私有目录,其它应用看不到,彼此也无法访问到该目录 Android 11 (R) Android 11 (R) 在 Android 10 (Q) 中分区存储的基础上进行了调整。 1. 新增执行批量操作 为实现各种设备之间的一致性并增加用户便利性,Android 11 向 MediaStore API 中添加了多种方法。 使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。

    99030

    C++随记(八)---存储持续性、作用和链接性

    C++随记(八)---存储持续性、作用和链接性 一、存储持续性 C++中一般使用3种(C++11中是四种,但是书上貌似没给第四种)不同的方案存储数据,这些方案的区别在于数据保留在内存中的时间。 这种内存的存储持续性为动态,有时候被称为自由存储或者堆。 二、作用 作用描述了名称在文件(翻译单元)的多大范围内可见。 作用有多种: 作用为局部的变量只在定义它的代码块中可用。 作用为全局(也叫文件作用)的变量在定义位置到文件结尾之间都可用。 还有函数原型作用、名称空间作用、函数作用等等。 三、链接性 链接性描述了名称如何在不同单元间共享。 总结:不同的C++存储方式是通过存储持续性、作用、链接性来描述的。 ①自动存储持续性: 在默认情况下,函数中声明的函数参数和 变量 为 自动存储持续性, 作用为局部,无链接性。 A、外部链接性 的静态持续变量 的使用 链接性为外部的变量简称为外部变量,它们的存储持续性为静态,作用为整个文件。

    39400

    还有Android 11权限变更讲解

    支持Android 11 目前Android 11的Beta版本已在上周四正式发布了,我这次也算是走在了时代的前沿,第一时间研究了Android 11中的各种新特性。 Android 11中还引入了权限过期的机制,本来用户授予了应用程序某个权限,该权限会一直有效,现在如果某应用程序很长时间没有启动,Android系统会自动收回用户授予的权限,下次启动需要重新请求授权。 另外,Android 11针对摄像机、麦克风、地理定位这3种权限提供了单次授权的选项。 这个规则其实PermissionX是可以不用考虑的,如果开发者在Android 11中同时申请前台和后台定位权限 ,那么就让系统直接抛出异常也是合理的,因为这种请求方式违反了Android 11的规则。 假如你同时请求了前台和后台定位权限,在Android 10系统中会将它们一起申请,在Android 11系统中会将它们分开申请,在Android 9或以下系统,则不会去申请后台定位权限,因为那个时候还没有这个权限

    64830

    Unity与Android Studio交互之 ✨ 获取手机权限存储、录音、相机等)

    Unity通过Android Studio 获取手机权限存储、录音、相机等) 文章目录 Unity通过Android Studio 获取手机权限存储、录音、相机等) 常用权限 一、动态获取权限流程 --外存储权限,构建语法需要用到此权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> --外存储权限,构建语法需要用到此权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> < 动态获取权限流程 Android系统从6.0开始对一些危险的权限进行了动态获取权限 下图是动态获取权限的额流程图 ? (new String[]{Manifest.permission.RECORD_AUDIO}, 0x01); //用new String[]的原因是可以在String[]中存储多个需要的权限

    31240

    前端day11-JS学习笔记(构造函数、对象的API、作用、arguments关键字)

    17 /*年月日时打印*/ //1.打印当前年份 console.log ( date.getFullYear () );//2018 //2.打印当前月份 范围:0-11 3.1作用:变量起作用的范围 js中只有两种:全局作用 局部作用 1.全局作用:变量在任何地方起作用 全局变量:在函数外面声明 2.局部作用:变量只能在函数内部起作用 局部变量:在函数内部声明 3.2-作用链 1.作用链是怎么来的 默认情况下,我们的js代码处于全局作用,当我们声明一个函数时,此时函数体会开辟一个局部作用, 如果我们在这个函数体中又声明一个函数,那么又会开辟一个新的局部作用 ,以此类推,就会形成一个作用链 2.变量在作用链上的访问规则 就近原则:访问变量时,会优先访问的是在自己作用链上声明的变量,如果自己作用链上没有声明这个变量,那么就往上一级去找有没有声明这个变量 ,如果有就访问,如果没有就继续往上找有没有声明,直到找到0级作用链上,如果有,就访问,如果没有就报错 注意点:js中只有函数才可以开辟作用,其他的任何语句都不可以 3.3-js预解析 为什么要有预解析机制

    22110

    解决android6.0以上不能读取外部存储权限的问题

    本地视频时, /** * 从本地的sdcard得到数据 * //1.遍历sdcard,后缀名 * //2.从内容提供者里面获取视频 * //3.如果是6.0的系统,动态获取读取sdcard的权限 //Handler发消息 handler.sendEmptyMessage(10); } }.start(); } /** * 解决安卓6.0以上版本不能读取外部存储权限的问题 Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1); return false; } return true; } 以上这篇解决android6.0 以上不能读取外部存储权限的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

    72920

    11期前端冲刺必备指南-执行上下文作用链闭包一等公民

    (全局环境记录在逻辑上是单个记录,但是它被指定为封装对象环境记录和声明性环境记录的组合) 声明性环境记录(绑定了包含在其作用内声明定义的标识符集),就是它存储变量和函数声明,功能代码的词法环境包含一个声明性环境记录 在函数上下文情况下,参数列表也会被加入到变量对象中作为属性,变量对象与当前作用相关。 不同作用的变量对象互不相同,它保存了当前作用的所有函数和变量。 JavaScript采用词法作用,也就是静态作用,函数的作用在函数定义的时候就决定了。 1.6 动态作用 动态作用,函数的作用是在函数调用的时候才决定的。 闭包是一个可以访问外部作用的内部函数。通过 var 创建的变量只有函数作用,通过 let 和 const 创建的变量既有函数作用,也有块作用。 da()函数的词法作用 外部作用执行完毕后,内部函数还在(在其他地方被引用),闭包才真正发挥作用

    6510

    python 基础知识第11讲:函数的返回值、作用、命名空间、递归、高级函数

    函数的作用 作用指的是变量生效的区域 在Python中有2种作用 1 全局作用 全局作用在程序执行时创建,在程序结束时销毁; 所以函数以为的区域都是全局作用; 在全局作用域中定义的变量 ,都属于全局变量,全局变量可以在程序汇总的任意位置访问; 2 函数作用 函数作用在函数调用时创建,在调用结束时销毁; 函数每调用一次就会产生一个新函数的作用; 在函数作用域中定义的变量 都是局部变量 ,它只能在函数内部被访问; 示例代码: a = 20 b = 20 def fn(): a = 10 #a定义在函数内部,所以它的作用就是函数内部,函数外部是无法访问的 print(' 就是修改全局变量 a = 10 print('函数内部:','a =',a) fn2() print('函数外部:','a =',a) 4.命名空间 命名空间实际上就是一个字典,是一个专门用来存储变量的字典 使用locals()来获取当前作用的命名空间 如果在全局作用域中调用locals()函数则获取全局作用命名空间; 如果在函数作用域中调用locals()则获取函数命名空间; locals(

    34220

    Android 11新特性,Scoped Storage又有了新花样

    其中一个可能需要适配的地方是Android 11权限变更,关于这部分内容我在 PermissionX现在支持Java了!还有Android 11权限变更讲解 这篇文章中已经做了比较详细的讲解。 10适配要点,作用存储 。 其实如果你的应用程序已经按照 Android 10适配要点,作用存储 这篇文章中讲解的方式对Scoped Storage进行了适配,那么恭喜你,现在你什么都不需要做,就已经能够适配Android 11 拥有对整个SD卡的读写权限,在Android 11上被认为是一种非常危险的权限,同时也可能会对用户的数据安全造成比较大的影响。 但文件浏览器就是要对设备的整个SD卡进行管理的,这怎么办呢? 这些功能我在 Android 10适配要点,作用存储 这篇文章中都进行了演示。 但是,假如你要修改其他应用程序所贡献的数据,那不好意思,Scoped Storage是不允许你这样做的。

    46920

    google官方推荐的隐私最佳实践!

    按照建议的流程说明应用中的功能为何需要某项权限。 请注意,用户或系统可能会多次拒绝该权限Android 会尊重用户的选择,忽略来自同一应用的权限请求。 如果您在 Android 11 上测试应用,请使用数据访问审核发现您的代码中和第三方库代码中私有数据受到访问的位置。 尽可能使用分区存储模型。了解如何根据应用的用例迁移到分区存储。 始终使用安全网络连接。对于应用的静态数据,请使用 Android 的内置凭据加密。 包含敏感数据的文件应位于内部存储空间内的应用私有目录中。 在 Android 10 中,对于仅与您的应用相关的文件,请将其存储在外部存储设备中的应用专属目录中。详细了解分区存储。 对于绝大多数非广告用例,使用作用仅限于应用的私密存储全局唯一 ID (GUID)。 使用安全设置 Android ID (SSAID) 在您拥有的应用之间共享状态,而无需要求用户登录帐号。

    33920

    拖不得了,Android11真的来了,最全适配实践指南奉上

    ,因为Android10已经出来很久了,所以资料还是很多的,这里推荐几篇 访问应用专属文件 Android 10适配要点,作用存储 AndroidQ(10)分区存储完美适配 说到这里可能又有人问了,那我的应用就是个手机管理器 申请所有文件访问权限 电话号码相关权限 ⭐ “Android 11 更改了您的应用在读取电话号码时使用的与电话相关的权限。 ” 具体改了什么呢? 文档访问限制 “为让开发者有时间进行测试,以下与存储访问框架 (SAF) 相关的变更只有在应用以 Android 11 为目标平台时才会生效。 ” 上文存储的时候说过可以通过SAF(存储访问框架--Storage Access Framework)来访问公共目录,但是Android11再次升级,部分目录和文件不能访问了,具体如下: 无法再使用 应用使用情况统计信息 “为了更好地保护用户,Android 11 将每个用户的应用使用情况统计信息存储在凭据加密存储空间中。

    3.3K340266

    Android 安全之框架层安全(四)

    此外,除了用于一些特殊情况的 Binder 框架,也会使用 Unix 套接字(例如,用于与 Zygote 守护进程的通信),但是这些机制不在本文的考虑范围之内。 " 11 android:description="@string/permdesc _sendSms" /> 12 ... 13 <! 此服务的另一个重要作用权限管理。 基本上,它可以被认为是一个策略管理的要素。 它存储了用于检查 Android 包是否分配了特定权限的信息。 PackageManagerService将所有第三方应用程序的权限的相关信息存储在/data/system/packages.xml[7]中。 该文件用作系统重新启动之间的永久存储器。 在启动期间,此信息使用存储在用于第三方应用程序的packages.xml文件中的数据,以及通过解析系统应用程序来收集。

    31120

    Android外部存储

    ● 支持多用户,每个用户拥有独立的外部存储 4、Android 4.4 ● 读操作需要声明READ_EXTERNAL_STORAGE权限 ● 应用读写在外部存储的应用目录(/sdcard/Android Storage Access Framework) [1.png] 5、Android 6.0 ● 外部存储支持动态权限管理 ● Adoptable Storage特性 6、Android 7.0 ● 引入作用目录访问 [2.png] 补充一个点: 如果应用的minSdkVersion和targetSdkVersion设置成<=3,系统会默认授予READ_EXTERNAL_STORAGE权限。 [11.png] ● 通过unshare方法创建新的挂载命名空间。 [12.png] ● 获取外部存储相关的环境变量。 动态权限管理 a.背景 Android 6.0引入了运行时权限,允许用户对危险权限进行动态授权,这部分权限包含外部存储访问权限

    83360

    Android MVVM框架搭建(十)Hilt、ViewBinding、Activity Result API

    ApplicationComponent.class)表示指定安装在Application中,然后在getMVUtils的方法上面的注解@Provides是提供者,@Singleton表示这是一个全局单例,它对应的作用是 MVUtils的作用一致,那么怎么去使用这个接口呢? 页面返回处理 在BaseActivity中有一个这样的方法,代码如下: /** * 请求外部存储管理 Android11版本时获取文件读写权限时调用 */ protected 上需要打开外部存储权限的开关才能访问外部存储,这里就是一个很好的例子,那么用新版本的Activity Result API要怎么去做呢? /** * 请求外部存储管理 Android11版本时获取文件读写权限时调用 新的方式 */ protected void requestManageExternalStorage

    31030

    扫码关注云+社区

    领取腾讯云代金券