Android 应用提示Detected problems with API问题

Posted u013164293

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 应用提示Detected problems with API问题相关的知识,希望对你有一定的参考价值。

问题 

      每次启动APP提示“Detected problems with API”

原因

      android P 后谷歌限制了开发者调用非官方公开API 方法或接口,使用反射调用源码就会出现这个提示弹窗。

      非 SDK 接口指的是 Android 系统内部使用、并未提供在 SDK 中的接口,开发者可能通过 Java 反射、JNI 等技术来调用这些接口。但是,这么做是很危险的:非 SDK 接口没有任何公开文档,必须查看源代码才能理解其行为逻辑。但是源码是JAVA写的,万物皆可反射,所以还是可以用反射干掉这个 每次启动都会弹出的提醒窗口。

解决方法

     在app的application启动时,调用如下方法可解决:

/**
     * 解决androidP 第一次打开程序出现弹窗,“Detected problems with API ”
     */
    private void closeAndroidPDialog(){
        try {
            Class aClass = Class.forName("android.content.pm.PackageParser$Package");
            Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class);
            declaredConstructor.setAccessible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            Class cls = Class.forName("android.app.ActivityThread");
            Method declaredMethod = cls.getDeclaredMethod("currentActivityThread");
            declaredMethod.setAccessible(true);
            Object activityThread = declaredMethod.invoke(null);
            Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown");
            mHiddenApiWarningShown.setAccessible(true);
            mHiddenApiWarningShown.setBoolean(activityThread, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 如果您有其他需要,或者相关内容有什么不完善的地方,请留言给我!!

您也可以加入下方qq群,共同学习进步,感谢参与!!

Android学习交流群:523487222

点击链接加入群【Android学习群】

 

以上是关于Android 应用提示Detected problems with API问题的主要内容,如果未能解决你的问题,请参考以下文章

Frameworks detected: Android framework is detected in the project

怎样关掉 ubuntu 中的 System Program Problem Detected 提示框

AndroidStudio Frameworks detected: Android framework is detected in the project Configure

android studio github新下拉项目 Android framework is detected.

如何关闭linux(ubuntn)中的"System Program Problem Detected"提示

AndroLua on Lollipop:JNI DETECTED ERROR IN APPLICATION:无法调用static int org.keplerproject.luajava.LuaJ