android 9.0

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

android系统升级适配
自从手机系统升级到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

相关文章:

  • 2021-12-03
  • 2021-12-03
  • 2021-11-22
  • 2022-01-16
  • 2021-08-22
  • 2022-01-24
  • 2021-07-29
  • 2022-12-23
猜你喜欢
  • 2022-01-19
  • 2021-08-20
  • 2021-08-21
  • 2021-07-25
  • 2021-11-05
  • 2021-11-22
  • 2021-12-03
相关资源
相似解决方案