目录

    • 前言
  • 依赖改动
  • 旧支持库软件包废弃,改为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-实践《第一行代码》中的出现的问题相关推荐

  1. 《第一行代码》 编写精美的聊天界面

    第一部分:9.png图像的制作 遥想当年Android2.3的时代,手机不Root那基本没得玩,我那个时候荒废了不少时间搞什么系统美化,反编译啊什么的.虽然到头来竹篮打水,但是也算对计算机有了一定的兴 ...

  2. 《第一行代码》中遇到的问题

    前言: 最近刚刚学完郭霖的第一行代码(第二版)这本书,是我选择入门安卓的一本书,看到很多人都推荐这本书,所以就去图书馆借来趁寒假学习下.但是由于技术是不断更新的,而这本书是16年的,虽然也算是市面上比 ...

  3. html中第一行代码,HTML5 CSS3初学者指南(1) – 编写第一行代码

    介绍 网络时代已经到来.现在对人们来说,每天上网冲浪已经成为一种最为常见的行为. 在网页浏览器中输入一段文本地址,就像http://www.codeproject.com,等待一下,网页就加载到浏览器 ...

  4. 《第一行代码》12.2学习中遇到的一些问题and心得

    1.书中P411中的activity_main.xml中的Toolbar不应该使用<android.support.v7.widget.Toolbar/> 应该使用<androidx ...

  5. 【Lua 教程系列第 4 篇】Lua 中的第一行代码 hello world

    这是[Lua 教程系列第 4 篇],如果觉得有用的话,欢迎关注专栏. 接着上一篇博客继续写. 这里我的 lua 文件名起名为"LuaTest",接着输入 print("h ...

  6. Android Studio 单刷《第一行代码》系列 03 —— Activity 基础

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  7. 《第一行代码》总结之UI、碎片(二)

    今天来谈一下第一行代码三四章所讲的东西,其实内容并不难,主要在于需要真正的去写去练手,去了解每一种情况该怎么用,因而我打算在后面的一段时间内整理下自己的这部分代码,这样结合代码去读的话更容易更快速的理 ...

  8. 《第一行代码》总结之简介、Activity(一)

      第一行代码安卓-第二版                                                                                       ...

  9. 第一行代码第三版笔记

    第3章 Activity 主acitivity:程序运行起来首先启动的activity manifest <?xml version="1.0" encoding=" ...

  10. 第一行代码——第十三章:继续进阶——你还应该掌握的高级技巧

    目录: 13.1 全局获取 Context的技巧 13.2 使用 Intent传递对象 13.2.1 Serializable 方式 13.2.2 Parcelable 方式 13.3 定制自己的日志 ...

最新文章

  1. 需求简报_代码简报:有史以来最怪诞的丑毛衣
  2. Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)
  3. FireWork 制作android 应用程序 icon
  4. Lucene索引库的维护功能实现
  5. 解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  6. 16 代码分割之错误边界与Suspense和命名导出
  7. 读取模式错误,计算引擎操作复杂……面对Hadoop这些问题该如何应对?
  8. 无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
  9. 变身抓重点小能手:机器学习中的文本摘要入门指南 | 资源
  10. [HNOI2014]世界树
  11. linux内核中等待队列(wait_event,wake_up...)
  12. mayapython常用模块_Maya中Python普及教程
  13. SQL研习录(24)——CHECK约束
  14. Oulu-CASIA WebFace and FER database
  15. 忘记Mac管理员密码怎么办?
  16. 绝对干货!淘宝运营在平台补单的十大靠谱技巧_店铺
  17. oracle19c集群重启,Oracle 19c集群重装
  18. 3. Fomula-Financial Market and Product
  19. Ai challenger 2017 image caption小结
  20. Odoo 16 企业版手册 - 采购之采购报价

热门文章

  1. rake matlab,[MATLAB毕业设计] rake 仿真程序 求助
  2. 【百度地图】在百度地图上框出边界线
  3. 中国各省份边界json文件
  4. mysql 合服_风云私服合区的方法详解(mysql数据库合并)
  5. 计算机职业核心素养,计算机专业人才核心素养研究-计算机专业论文-计算机论文(10页)-原创力文档...
  6. Code For Better 谷歌开发者之声——谷歌Web工具包(GWT)
  7. 三星c7 linux驱动,三星c7驱动|三星c7手机驱动下载 v1.5.55.0 官方版 - 比克尔下载
  8. 〖教程〗Ladon免杀/.NET免杀/Exe2Ps1/Ps12Exe
  9. 网络安全知识点(全)
  10. 2020爱站网突然关闭,站长们现在用啥工具分析数据了?