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

转自:https://blog.csdn.net/zpjsmalltime/article/details/86577058

最近项目测试MM反馈每次进入app,会提示一个弹窗。

调查测试发现是android9.0系统上产生的,综合网上各位前被采坑的资料分享。先把亲测可用的解决方案分享给大家,希望遇到此类问题的小伙伴可以快速解决

原因分析

Android P 也就是android9.0 谷歌限制开发者调用非官方公开API 方法或接口(使用@hide注解的系统源码),当开发者用反射直接调用源码时就会出现上述提示框。谷歌旨在提示开发者尽量少使用反射只用调用系统api,以免造成不必要的麻烦。但是项目中,有些功能实现要用到怎么办?即使咱们不用,依赖的第三方类库,用到怎么办?这就坑了。所以,负负得正,哈哈,咱们在使用反射怼回去,屏蔽提示。

//在app初始化时调用即可
public class MyApplication extends Application {
 
    public JoyApplication() {
    }
 
    @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();
       }
   }
 

--------------------- 
作者:Activity-Pj 
来源:CSDN 
原文:https://blog.csdn.net/zpjsmalltime/article/details/86577058 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值