欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Android仿今日头条Kotlin版本

Android仿今日头条Kotlin版本

2025/4/28 14:29:09 来源:https://blog.csdn.net/weixin_40420578/article/details/147465963  浏览:    关键词:Android仿今日头条Kotlin版本
软件信息
  1. gradle-8.0
  2. Sdk信息
    //编译版本
    compileSdk=33
    //最小版本
    minSdk=24
    //目标版本
    targetSdk=31
  3. Android Studio Giraffe | 2022.3.1 Patch 2(建议版本不要太低)
  4. MVVM
  5. Android Jetpack
项目注意
  1. 没有服务器,用的是Apifox模拟服务器返回,所以有的功能是不能测试的,比如注册等。
  2. 这是根据教学视频学习,码出来的项目,跟视频里面的一样。
  3. 通过https://sqlitebrowser.org/dl/下载工具,把手机/模拟器的data/data/包名/databases/.db文件打开进行查看数据库内容。
项目涉及功能
  1. 商城;
  2. 即时通讯;
  3. 微信、qq登录;
  4. 微信、支付宝支付等; 
项目运行界面效果图

注:项目源码在gitee里(设置私有),想要教学视频+code,私聊(非无偿,介意勿扰谢谢)。

 

问题及解决

按照视频敲代码出现过的问题集合。某些问题是因为是用Apifox模拟服务器返回。只提供一种解决方法,不能保证最优,可作为参考。

1.问题:java.security.cert.CertificateException: Chain validation failed 

解决: 

object NetworkModule {/*** 提供OkHttpClient*/fun provideOkHttpClient(): OkHttpClient {//初始化okhttpval okhttpClientBuilder = OkHttpClient.Builder()//新增下面这段//接受自签名或不受信任的证书。这通常用于开发环境或内部测试,生产环境不建议使用if (Config.DEBUG){okhttpClientBuilder.sslSocketFactory(UnsafeSSLHelper.createUnsafeSSLContext().socketFactory,UnsafeSSLHelper.createUnsafeTrustManager())okhttpClientBuilder.hostnameVerifier { _, _ -> true } // 跳过主机名验证}
…………………………………………………………}
}
class UnsafeSSLHelper {companion object {// 创建不安全的 TrustManager,接受所有证书fun createUnsafeTrustManager(): X509TrustManager {return object : X509TrustManager {@Throws(CertificateException::class)override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {// 接受所有客户端证书}@Throws(CertificateException::class)override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {// 接受所有服务器证书}override fun getAcceptedIssuers(): Array<X509Certificate> {return arrayOf()}}}// 创建不安全的 SSLContextfun createUnsafeSSLContext(): SSLContext {try {val sslContext = SSLContext.getInstance("SSL")sslContext.init(null,arrayOf<TrustManager>(createUnsafeTrustManager()),SecureRandom())return sslContext} catch (e: Exception) {throw RuntimeException(e)}}}
}

2. 解决高德地图AMapUtilCoreApi、NetProxy类冲突

3.优化:发布界面进入“当前位置”一进来不显示PIO列表,如下左图优化成右图

    

解决: 

步骤1:class SelectLocationActivity:AMap.OnMyLocationChangeListener{}
步骤2:binding.mapView.map.setOnMyLocationChangeListener(this)//设置定位监听
步骤3://实现 AMap.OnMyLocationChangeListener 监听器,通过如下回调方法获取经纬度信息:override fun onMyLocationChange(location: Location?) {location?.let {searchPOI(LatLng(it.latitude,it.longitude), null)}}

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词