AS-实践《第一行代码》中的出现的问题
目录
- 前言
- 依赖改动
- 旧支持库软件包废弃,改为androidx 软件包
- Recyclerview
- 内容提供器Provider
- 控件toolbar
- 等等
- 其他主要问题
- 通知Notification
- 内嵌网页WebView
- 前台服务Foreground
- 下载服务
- 百度LBSsdk下载地址更新
- 酷欧天气
前言
本人是按照《第一行代码》来学习Android开发的。但是此书是2016年出版,至今到2019年中谷歌公司也在不断对AS进行更新。如方法的废弃或改进、依赖的更新等。
于是本人将学习中遇到的问题和解决方法统一记录在这,主要分为三类改动。
依赖改动
从3.4版本的gradle开始,compile已经被api与implementation取代。
关于三者的区别请看文章api与implementation的区别
旧支持库软件包废弃,改为androidx 软件包
此改动主要影响的是控件名和添加的包名,使用旧版包名会发生错误(app异常退出)
两者的映射关系详见类映射
这是我在简书上找到的原因Android:你好,androidX!再见,android.support
Recyclerview
依赖由
compile ‘com.android.support:recyclerview-v7:24.2.1’ 改为
implementation ‘com.android.support:recyclerview-v7:28.0.0’
布局名称由
android.support.v7.widget.RecyclerView 改为
androidx.recyclerview.widget.RecyclerView
内容提供器Provider
我在做利用相机和浏览相册项目时,AndroidManifest文件中如下语句飘红
android:name="android.support.v4.content.FileProvider"
可以改为
android:name="androidx.core.content.FileProvider"
控件toolbar
//android.support.v7.widget.Toolbar//已废弃
androidx.appcompat.widget.Toolbar
等等
其他主要问题
通知Notification
NotificationCompat.Builder(Context context)方法改为
NotificationCompat.Builder(@NonNull Context context, @NonNull String channelId)方法
增加了一个String参数channelId,用于将notification进行分类,如设置不同优先级等。并且就算这样,通知还是不能正常发送,还需在该方法前加入代码:
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {//只在Android O之上需要渠道,这里的第一个参数要和下面的channelId一样NotificationChannel notificationChannel = new NotificationChannel("1", "name", NotificationManager.IMPORTANCE_HIGH);//如果这里用IMPORTANCE_NOENE就需要在系统的设置里面开启渠道,通知才能正常弹出manager.createNotificationChannel(notificationChannel);}
另外,如果你想让你的通知具有振动和顶部弹窗功能还需要在AndroidManifest中申明权限
<uses-permission android:name="android.permission.VIBRATE" />
因为这不是危险权限所以在安装app时系统会默认帮你安装,然后打开手机相应app的顶部弹窗和振动权限即可。
内嵌网页WebView
按《第一行代码》中的操作在我的华为荣耀10上运行时,出现错误:
解决方案:在Androidmanifest.xml中加入代码
android:usesCleartextTraffic="true"
前台服务Foreground
因为这里牵涉到了通知的相关方法,但是如之前提到的,通知中某些方法已经过时且添加了渠道的概念。这里做出的改动和通知一样。再在AndroidManifest中添加如下权限即可
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
下载服务
下载失败
百度LBSsdk下载地址更新
原地址改为:
http://lbs.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar
酷欧天气
使用我的honor10测试时会出现网页无法显示或停留在debug读取界面
但是使用虚拟机却没有问题,解决办法:
在res下创建文件network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /></trust-anchors></base-config>
</network-security-config>
在Androidmanifest.xml中加入代码
android:networkSecurityConfig="@xml/network_security_config"
我也不知道为啥,来自简书
AS-实践《第一行代码》中的出现的问题相关推荐
- 《第一行代码》 编写精美的聊天界面
第一部分:9.png图像的制作 遥想当年Android2.3的时代,手机不Root那基本没得玩,我那个时候荒废了不少时间搞什么系统美化,反编译啊什么的.虽然到头来竹篮打水,但是也算对计算机有了一定的兴 ...
- 《第一行代码》中遇到的问题
前言: 最近刚刚学完郭霖的第一行代码(第二版)这本书,是我选择入门安卓的一本书,看到很多人都推荐这本书,所以就去图书馆借来趁寒假学习下.但是由于技术是不断更新的,而这本书是16年的,虽然也算是市面上比 ...
- html中第一行代码,HTML5 CSS3初学者指南(1) – 编写第一行代码
介绍 网络时代已经到来.现在对人们来说,每天上网冲浪已经成为一种最为常见的行为. 在网页浏览器中输入一段文本地址,就像http://www.codeproject.com,等待一下,网页就加载到浏览器 ...
- 《第一行代码》12.2学习中遇到的一些问题and心得
1.书中P411中的activity_main.xml中的Toolbar不应该使用<android.support.v7.widget.Toolbar/> 应该使用<androidx ...
- 【Lua 教程系列第 4 篇】Lua 中的第一行代码 hello world
这是[Lua 教程系列第 4 篇],如果觉得有用的话,欢迎关注专栏. 接着上一篇博客继续写. 这里我的 lua 文件名起名为"LuaTest",接着输入 print("h ...
- Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- 《第一行代码》总结之UI、碎片(二)
今天来谈一下第一行代码三四章所讲的东西,其实内容并不难,主要在于需要真正的去写去练手,去了解每一种情况该怎么用,因而我打算在后面的一段时间内整理下自己的这部分代码,这样结合代码去读的话更容易更快速的理 ...
- 《第一行代码》总结之简介、Activity(一)
第一行代码安卓-第二版 ...
- 第一行代码第三版笔记
第3章 Activity 主acitivity:程序运行起来首先启动的activity manifest <?xml version="1.0" encoding=" ...
- 第一行代码——第十三章:继续进阶——你还应该掌握的高级技巧
目录: 13.1 全局获取 Context的技巧 13.2 使用 Intent传递对象 13.2.1 Serializable 方式 13.2.2 Parcelable 方式 13.3 定制自己的日志 ...
最新文章
- 需求简报_代码简报:有史以来最怪诞的丑毛衣
- Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)
- FireWork 制作android 应用程序 icon
- Lucene索引库的维护功能实现
- 解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 16 代码分割之错误边界与Suspense和命名导出
- 读取模式错误,计算引擎操作复杂……面对Hadoop这些问题该如何应对?
- 无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
- 变身抓重点小能手:机器学习中的文本摘要入门指南 | 资源
- [HNOI2014]世界树
- linux内核中等待队列(wait_event,wake_up...)
- mayapython常用模块_Maya中Python普及教程
- SQL研习录(24)——CHECK约束
- Oulu-CASIA WebFace and FER database
- 忘记Mac管理员密码怎么办?
- 绝对干货!淘宝运营在平台补单的十大靠谱技巧_店铺
- oracle19c集群重启,Oracle 19c集群重装
- 3. Fomula-Financial Market and Product
- Ai challenger 2017 image caption小结
- Odoo 16 企业版手册 - 采购之采购报价
热门文章
- rake matlab,[MATLAB毕业设计] rake 仿真程序 求助
- 【百度地图】在百度地图上框出边界线
- 中国各省份边界json文件
- mysql 合服_风云私服合区的方法详解(mysql数据库合并)
- 计算机职业核心素养,计算机专业人才核心素养研究-计算机专业论文-计算机论文(10页)-原创力文档...
- Code For Better 谷歌开发者之声——谷歌Web工具包(GWT)
- 三星c7 linux驱动,三星c7驱动|三星c7手机驱动下载 v1.5.55.0 官方版 - 比克尔下载
- 〖教程〗Ladon免杀/.NET免杀/Exe2Ps1/Ps12Exe
- 网络安全知识点(全)
- 2020爱站网突然关闭,站长们现在用啥工具分析数据了?