android系统升级适配

android 7.0

1、 PopupWindow的showAsDropDown位置问题 参数无效

现象:在7.0以上,我们会发现一个问题。当使用showAsDropDown方法,将PopupWindow显示在某控件下方的时候,会出现位置错位的问题,PopupWindow的起始点跑到了屏幕顶部。
分析:出现的原因是因为,在Android7.0以后,PopupWindow的显示会有一个判断,当PopupWindow的高度大于屏幕的剩余高度时,会往控件上方超出。因为这边给PopupWindow设置的高度是

所以,PopupWindow会起始点会跑到了屏幕顶部
解决方案:

@Override
    public void showAsDropDown(View anchor) {
        if(Build.VERSION.SDK_INT >= 24) {
            Rect rect = new Rect();
            anchor.getGlobalVisibleRect(rect);
            int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom;
            setHeight(h);
        }
        super.showAsDropDown(anchor);
    }

参考:Android7.0上PopupWindow的showAsDropDown位置问题 参数无效

android 9.0

1、 Detected problems with API compatibility(visit g.co/dev/appcompat for more info)

在这里插入图片描述
自从手机系统升级到Android 9.0以后,打开APP开始出现以上提示,出现这种情况的原因是:
Android P 后谷歌限制了开发者调用非官方公开API 方法或接口,也就是说,你用反射直接调用源码就会有这样的提示弹窗出现,非 SDK 接口指的是 Android 系统内部使用、并未提供在 SDK 中的接口,开发者可能通过 Java 反射、JNI 等技术来调用这些接口。但是,这么做是很危险的:非 SDK 接口没有任何公开文档,必须查看源代码才能理解其行为逻辑。
但是源码是JAVA写的,万物皆可反射,所以还是可以用反射干掉这个 每次启动都会弹出的提醒窗口。

//在app初始化时调用即可
public class MyApplication extends Application {
 
    @Override
    public void onCreate() {
        super.onCreate();
        disableAPIDialog();
    } 
     /**
      * 反射 禁止弹窗
     */
    private void disableAPIDialog(){
       if (Build.VERSION.SDK_INT < 28)return;
       try {
            Class clazz = Class.forName("android.app.ActivityThread");
         Method currentActivityThread = clazz.getDeclaredMethod("currentActivityThread");
         currentActivityThread.setAccessible(true);
         Object activityThread = currentActivityThread.invoke(null);
         Field mHiddenApiWarningShown = clazz.getDeclaredField("mHiddenApiWarningShown");
         mHiddenApiWarningShown.setAccessible(true);
         mHiddenApiWarningShown.setBoolean(activityThread, true);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

参考:Detected problems with API 弹窗 屏蔽解决方案 android

发布了216 篇原创文章 · 获赞 91 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/yu75567218/article/details/90230335