android 7.0 禁止 imei,Android一些适配

# Android 版本适配重点

其他细节请查看官网对应版本:https://developer.android.com/preview

## 7.0

1. 后台优化

- 移除了以下静态注册广播通知(动态注册可继续使用):CONNECTIVITY_ACTION  ACTION_NEW_PICTURE ACTION_NEW_VIDEO

2. 系统权限更改

- Android 7.0 或更高版本的应用私有目录被限制访问,传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider,并授予 URI 临时访问权限

- DownloadManager 不再按文件名分享私人存储的文件。旧版应用在访问 COLUMN_LOCAL_FILENAME 时可能出现无法访问的路径。面向 Android 7.0 或更高版本的应用在尝试访问 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。通过使用 DownloadManager.Request.setDestinationInExternalFilesDir() 或 DownloadManager.Request.setDestinationInExternalPublicDir() 将下载位置设置为公共位置的旧版应用仍可以访问 COLUMN_LOCAL_FILENAME 中的路径,但是我们强烈反对使用这种方法。对于由 DownloadManager 公开的文件,首选的访问方式是使用ContentResolver.openFileDescriptor()。

file:// 类型的Uri无法使用,需要使用FileProvider转换

3. 多窗口模式

3.1 适配多窗口模式

https://developer.android.com/guide/topics/ui/multi-window?hl=zh_cn

3.2 关闭多窗口模式

在清单的 activity 或 application 元素中设置此属性,以启用或停用多窗口显示:

```html

android:resizeableActivity=["true" | "false"]

```

## 8.0

1. 后台执行限制

- 尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException

应使用startForegroundService函数,并且应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数

2. 应用快捷键

https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=zh-cn#as

3. 通知

针对 8.0 的应用,创建通知前需要创建渠道,创建通知时需要传入 channelId,否则通知将不会显示

4. 升级

针对 8.0 的应用需要在 AndroidManifest.xml 中声明 REQUEST_INSTALL_PACKAGES 权限,否则将无法进行应用内升级

5. 桌面图标(不强制,但是桌面图片显示会有白底)

https://mp.weixin.qq.com/s/WxgHJ1stBjokPi6lTUd1Mg

6. 广播

移除所有为隐式广播 Intent 注册的广播接收器,改为动态注册

7. 安装apk

需要增加权限

```html

```

## 9.0

1. 前台服务

应用以 Android 9 或更高版本为目标平台并使用前台服务,则必须请求 FOREGROUND_SERVICE 权限,系统会自动为请求权限的应用授予此权限,如果不请求 FOREGROUND_SERVICE权限将会报错,Manifest加入:

```html

```

2. 网络

使用https或者加入配置项android:networkSecurityConfig

3. Apache HTTP 客户端弃用

所以要想继续使用Apache HTTP,需要在应用的 AndroidManifest.xml 文件中添加

```html

```

4. 启动Activity

不能直接非 Activity 环境中(比如Service,Application)启动 Activity,否则会崩溃报错,需要Intent 中添加标志FLAG_ACTIVITY_NEW_TASK

## 10

1. 禁止后台启动Activity

使用通知触发,需要在AndroidManifest上增加权限USE_FULL_SCREEN_INTENT申明

2. 设备硬件信息读取限制,AndroidId,IMEI不可获取

3. Scope Store

可以使用以下配置停用分区存储

- 如果targetSdkVersion < 29,那么不用处理

- 如果targetSdkVersion >= 29,加入一下配置

```html

Android 10 or higher. -->

...

```

使用分区存储,如果不需要访问其他应用的公开文件,则不需要申请读写权限READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE

- 内部存储

可使用原有File API访问方式

- 外部存储

1. 外部公开目录

可供其他应用和用户自由访问的文件,卸载您的应用后,这些文件应该仍然可供用户使用

只有通过MediaStore API或者SAF(可在任意目录下新建文件,但是是通过用户交互方式),并且限制目录只能为媒体文件或者下载目录,无法使用File API访问

- 如果要保存照片、音频文件或视频剪辑,请使用 MediaStore API

- 如果要保存任何其他文件(如 PDF 文档),请使用 ACTION_CREATE_DOCUMENT intent,这是存储访问框架(SAF的一部分。此操作会调起系统UI界面

2. 外部私有目录

使用getExternalFilesDir()函数访问,后续操作可使用File API

卸载应用时会被清除,调用 getExternalFilesDir() 并传入指明您想要的目录类型的名称来获取特定于应用的目录,或调用getExternalFilesDir()传入自定义文件夹名称

```kotlin

//固定图片目录

getExternalFilesDir(DIRECTORY_PICTURES)

//自定义目录

getExternalFilesDir("myDir")

```

4. 后台定位权限

需要ACCESS_BACKGROUND_LOCATION权限

5. 限制使用非SDK接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Filament】纹理贴图

1 前言 本文主要介绍使用 Filament 实现纹理贴图&#xff0c;读者如果对 Filament 不太熟悉&#xff0c;请回顾以下内容。 Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体 Filament 纹理坐标的 x、y 轴正方向分别朝右和朝上&#xff0c;其 y 轴正方向朝向与 OpenGL ES…

认识JSON绑定:概述系列

JSON绑定的Java API&#xff08;JSON-B&#xff09;1.0增强了Java EE平台对JSON数据交换格式的整体支持。 事实证明&#xff0c; 用于JSON处理的Java API&#xff08;JSON-P&#xff09;1.1十分流行&#xff0c;它们共同构成了完美的合作伙伴&#xff0c;填补了Java EE的JSON功…

c++可视化界面_新基建的福音:智慧楼宇可视化监控系统引领智能化新时代

前言智慧楼宇和人们的生活息息相关&#xff0c;楼宇智能化程度的提高&#xff0c;会极大程度的改善人们的生活品质&#xff0c;在当前 工业互联网 大背景下受到很大关注。目前 智慧楼宇可视化监控 的主要优点包括:智慧化 -- 智慧楼宇是一个生态系统&#xff0c;像人一样拥有感知…

table 多行 宽度不一致_“table”除了桌子,你还知道一些别的意思吗?

就比如"nine-nine table"这可是小学一年级必须要掌握的知识实际上&#xff0c;nine-nine table是九九乘法表&#xff0c;乘法表可以用times table表示&#xff0c;书面用语是multiplication table。table除了桌子的意思外&#xff0c;还有一些别的意思和表达&#xf…

android uri db,Android ContentProvider封装数据库和文件读写总结

本文是我各处东拼西凑加上自己实现一个ContentProvider的使用总结&#xff0c;留做后用&#xff0c;主要介绍ContentProvider的集成方法。一、综述ContentProvider是Android四大组件之一&#xff0c;其核心功能是提供应用间的统一的数据访问方式&#xff0c;当然也可以用于应用…

ddos攻击工具_简单有效的ddos攻击防御方法

做过网站的站长大多有被ddos攻击的经历&#xff0c;不少人面对竞争对手的网站就是直接雇人ddos攻击网站&#xff0c;导致对方网站长期打不开&#xff0c;最后无奈关闭网站&#xff0c;初尧今天就告诉大家一个最简单也是最有效的防御方法。高防服务器/高防IP对于游戏&#xff0c…

android gpio驱动实例,安卓gpio操作示例

GPIO值在RK3288中的计算方法为&#xff1a;bank32pin&#xff0c;如&#xff1a;GPIO7A3&#xff1a; 732 0*8 3227GPIO0B5: 032 1*8 5131. 导出/sys/class/gpio# echo 44 > export2. 设置方向/sys/class/gpio/gpio44# echo out > direction3. 查看方向/sys/class/gpio/…

回调函数中有回调函数吗_嗨,那里有回调!

回调函数中有回调函数吗因为是我的书包&#xff0c;所以我喜欢JavaScript 。 实际上&#xff0c;我已经开始喜欢JavaScritp的面向异步回调的编程风格 。 因此&#xff0c;当我发现自己处于非JavaScript环境中时&#xff08;例如Java&#xff09; &#xff0c;我往往会错过使用回…

python的django_django能用来做什么

Django是什么 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MT‘V的框架模式&#xff0c;即模型M&#xff0c;模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的&#xff0c;即是CMS&#xff08;内容管理系统&am…

小程序确定取消弹窗_浅析微信小程序modal弹窗关闭默认会执行cancel问题

在我们使用小程序的modal组件时候&#xff0c;有的时候会碰到一个问题&#xff0c;那就是弹框的关闭&#xff0c;我们并没有选择取消或确定&#xff0c;而是点击弹框之外的部分&#xff0c;这个时候弹框会关闭&#xff0c;按理来说不会触发取消和确定的绑定事件&#xff0c;但是…

android n 发布时间,Android N 正式版将在9月发布

【环球科技综合报道】据外媒5月8日报道&#xff0c;谷歌预计将在9月份放出正式版Android N。三星、华为、LG、HTC和黑莓等品牌手机将获Android N升级。此前谷歌发出的路线图中的升级安排&#xff1a;3月: Android N 开发者预览版 1 (alpha)4月: Android N 开发者预览版 2 (beta…

ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据

我将Realm for Swift与仅内存配置一起使用。 由于在后台线程中更新数据库&#xff0c;因此每次使用时都会创建一个Realm实例。 在Realm文档中提到了此问题&#xff0c;这里还有另一个问题https://stackoverflow.com/a/45375608/613121。但是通过测试数据库&#xff0c;我注意到…

datatable如何生成级联数据_如何把Excel表数据批量生成条形码

条形码属于一维条码&#xff0c;是将宽度不等的多个黑条和空白&#xff0c;按照一定的编码规则排列&#xff0c;用以表达一组信息的图形标识符&#xff0c;条形码的种类比较多&#xff0c;比如常用的Code128码&#xff0c;Code39码&#xff0c;Code93码&#xff0c;EAN-13码&am…

android数字累加,Android自己设置View之数字自动增长

第一次写文&#xff0c;请多指教&#xff0c;有何问题及改进建议都可以告诉我-.-Idea来自金山词霸App的单词计数&#xff0c;下面先放图autoNumber.gif如上图&#xff0c;就是&#xff0c;下面开始进入自己设置View自己设置View步骤1. 自己设置属性2. 生成构造方法3. onMeasure…

spring条件注解有哪些_Spring4有条件

spring条件注解有哪些Spring 4引入了一个称为Conditional的新功能&#xff0c;该功能针对于生成bean的Spring组件&#xff0c;并注视这些bean的生成&#xff0c;实质上&#xff0c;它提供了一种条件生成bean的方法。 考虑一个简单的例子&#xff1a; 我有一个名为“ Customer…

settimeout怎么用_怎么实现一个3d翻书效果

本篇主要讨论以下两种翻书动画的实现&#xff1a;第一种是整页翻转的效果&#xff1a;这种整页翻转的效果主要是做rotateY的动画&#xff0c;并结合一些CSS的3d属性实现。第二种折线翻转的效果&#xff0c;如下图所示&#xff1a;主要是通过计算页面翻折过来的位置。这两种原理…

springboot怎么返回404_SpringBoot(二十)_404返回统一异常处理结果

1.修改application.properties文件# 自定义404#出现错误时, 直接抛出异常spring.mvc.throw-exception-if-no-handler-foundtrue#不要为我们工程中的资源文件建立映射spring.resources.add-mappingsfalse2.添加controller增强处理if (e instanceof NoHandlerFoundException) {re…

android 通知垃圾回收,Android中垃圾回收日志信息

原因GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms2msGC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms红颜色标出的部分就是垃圾回收触发的原因。在Android中有五种类型的垃圾回收触发原因。GC_CONCURRENT当堆内存增长…

5个令人震惊的统计数据证明日志不足

事实证明&#xff0c;我们都犯有记录不当行为的罪行。 不相信我们吗&#xff1f; 这些统计数据可能会改变您的想法 当人们提出带有明显答案的问题时&#xff0c;这非常令人不快&#xff0c;因此&#xff0c;我不会坐在这里问您和您的团队是否使用日志文件来监视预生产和生产环…

linearregression_机器学习-TensorFlow建模过程 Linear Regression线性拟合应用

TensorFlow是咱们机器学习领域非常常用的一个组件&#xff0c;它在数据处理&#xff0c;模型建立&#xff0c;模型验证等等关于机器学习方面的领域都有很好的表现&#xff0c;前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构即&#xff1a;Tensor和Dataset&#x…