Android 9,kotlin开发微信

本文介绍了Android 9.0中关于网络和服务启动的变化。包括HTTP请求失败的解决方案,需要添加网络安全配置来支持http。Apache HTTP客户端在9.0中被弃用,如果需要使用需要在AndroidManifest.xml中添加声明。此外,9.0开始启动前台服务需要请求FOREGROUND_SERVICE权限,启动非Activity上下文的Activity需添加FLAG_ACTIVITY_NEW_TASK标志。
摘要由CSDN通过智能技术生成

3.网络

1.Http请求失败

在9.0中默认情况下启用网络传输层安全协议 (TLS),默认情况下已停用明文支持。也就是不允许使用http请求,要求使用https。

比如我使用的是okhttp,会报错:

java.net.UnknownServiceException: CLEARTEXT communication to xxxx not permitted by network security policy

解决方法是需要我们添加网络安全配置。首先在 res 目录下新建xml文件夹,添加network_security_config.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<network-security
-config>

AndroidManifest.xml中的application添加:

<?xml version="1.0" encoding="utf-8"?>

<manifest … >



以上这是一种简单粗暴的配置方法,要么支持http,要么不支持http。为了安全灵活,我们可以指定支持的http域名:

<?xml version="1.0" encoding="utf-8"?> secure.example.com cdn.example1.com

当然不止这些配置,还有抓包配置、设置自定义CA以及各种场景下灵活的配置,详细的方法可以查看官方文档

2.Apache HTTP 客户端弃用

在 Android 6.0 时,就已经取消了对 Apache HTTP 客户端的支持。 从 Android 9.0 开始,默认情况下该库已从 bootclasspath 中移除。但是耐不住有些SDK中还在使用,比如我见到的友盟QQ分享报错问题

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

4.前台服务

可以试着搜索一下你的代码,看是否有调用startForegroundService 方法来启动一个前台服务。

startForegroundService 主要来源估计都是8.0适配时候加上的:

Intent intentService = new Intent(this, MyService.class);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
startForegroundService(intentService);
} else {
startService(intentService);
}

9.0 要求创建一个前台服务需要请求 FOREGROUND_SERVICE 权限,否则系统会引发 SecurityException

java.lang.RuntimeException: Unable to start service com.weilu.test.MyService@81795be with Intent { cmp=com.weilu.test/.MyService }:
java.lang.SecurityException: Permission Denial: startForeground from pid=28631, uid=10626 requires android.permission.FOREGROUND_SERVICE
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3723)
at android.app.ActivityThread.access 1700 (

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种适用于Android开发的编程语言,可以通过它来实现微信登录功能。微信登录是指用户可以通过微信账号直接登录到我们的应用程序中,提供了一种方便快捷的登录方式。 要实现Kotlin微信登录,首先需要在微信开放平台注册一个开发者账号,并创建一个应用,获取到相应的AppID和AppSecret。然后,在我们的应用中集成微信SDK,可以通过引入微信开放平台提供的SDK库文件来实现。 在Kotlin中,我们可以通过调用微信SDK中的接口函数来实现微信登录功能。首先,需要在应用的登录页面添加一个微信登录按钮,当用户点击该按钮时,调用微信的授权登录功能。在点击事件中,将AppID和AppSecret等参数传递给SDK的初始化函数,并调用微信的授权登录接口,跳转到微信登录界面。 用户在微信登录界面输入微信账号和密码完成登录操作后,微信会将授权登录的结果返回给我们的应用。我们需要在应用中实现一个回调函数,用于接收微信授权登录的结果。根据结果,可以判断用户是否成功登录,并进行相应的处理,比如获取用户的个人信息、保存登录状态等。 通过上述步骤,我们就可以在Kotlin实现微信登录功能了。值得注意的是,为了保护用户的隐私和安全,我们在使用微信登录时需要遵守相关的开发规范和用户协议,确保用户信息的合法性和安全性。同时,我们也需要对登录过程中可能产生的错误和异常进行处理,提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值