Android 10的适配

自从项目升级AndroidX之后,以前弄过的一些东西都不怎么好使了,关键的一些第三方库也需要升级,说道为啥使用Androidx,这就是个问题了,某天不小心把sdk升级到29之后发现support 库不维护了......(咋的,活不起了不想干活了吗),瞬间感觉自己是不是饭碗没了,不管三七二十一先百度一番,终于才知道jetpack新生态。算了扯远了 先聊聊Android10 需要升级的东西吧!!!

1、需要重点升级的第三方库   Glide 4.11.0、友盟、PictureSelector等兼容Android10和Androidx的版本,

2、support 换Androidx 库,注意一点的是使用LocalBroadcastManager 的小伙伴 不要升级material的最新1.1.0版本,因为1.1.0版本推荐用LiveData,里面就找不到LocalBroadcastManager 类了!!!

   implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    //1.0以上版本废弃本地广播暂时不升级
    implementation 'com.google.android.material:material:1.0.0'

3、Android deviceId的获取

唯一 ID 的替代

Google 给出的解决方案是:如果您的应用有 追踪非登录用户重装 的需求,可用 ANDROID_ID 来标识设备。

ANDROID_ID 的生成规则为:签名 + 设备信息 + 设备用户

ANDROID_ID 重置规则:设备恢复出厂设置时,ANDROID_ID 将被重置

String androidId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 

也就是从 Android 10 开始已经无法完全标识一个设备,曾经用 mac 地址、IMEI 等设备信息标识设备的方法,从 Android 10 开始统统失效。而且无论你的 APP 是否是配过 Android 10。

4、文件路径获取改变:Android10以下获取path  用getPath() ,Android10用 getRealPath()。(重点)

                    String pathName = (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) ? localMedia.getPath() : localMedia.getRealPath();


5、Android Q 为每个应用程序在外部存储设备提供了一个独立的存储沙箱

6、App专属路径将不再需要申请权限 READ_EXTERNAL_STORAGE,

          而手机共享路径需要申请   READ_EXTERNAL_STORAGE。

7、前几天又发现了一个新问题,Android5.1.1 WebView加载不出来,初始化的时候 bitmap对象拿不到getWidth,或者干脆使用不了webView。这真是一波未平一波又起,可以去另一篇文章看Android 5.1.1webView的解决方案

能说的就这么多,平时用到的也不是特别多写的不好的可以提一下我再去继续了解。写这些也是为了自己加深一下记忆,下次遇到相同的问题能尽快的处理完毕。

你可能感兴趣的:(android,Android适配)