美文网首页Android开发AndroidAndroid技术知识
另外一种更优雅兼容Android P获取Application的

另外一种更优雅兼容Android P获取Application的

作者: Lazy1 | 来源:发表于2019-03-29 15:47 被阅读25次
    • 那么我们有没有什么优雅的方法去调用hiden的API呢?

      有这里我们使用的是类加载器的委托机制,具体怎么做呢。

    package android.app;
    
    
    public class ActivityThread {
    
        public static Application currentApplication() {
            return null;
        }
    }
    
    
    image.png
    try {
          //兼容android P,直接调用@hide注解的方法来获取application对象
          Application app = ActivityThread.currentApplication();
          Log.e("MainActivity", app.getPackageName());
        } catch(Exception e) {
          e.printStackTrace();
        }
        try {
          //兼容android P,直接调用@hide注解的方法来获取application对象
          Application app = AppGlobals.getInitialApplication();
          Log.e("MainActivity2", app.getPackageName());
        } catch (Exception e) {
          e.printStackTrace();
        }
    
    
    这里需要注意,我们在本地定义的两个ActivityThread和AppGlobals要以android.app包名来命名,这样就可以欺骗编辑器,然后根据类加载器的委托机制,他会直接加载系统的ActivityThread和AppGlobals因此就可以直接获取application了
    
    
    

    相关文章

      网友评论

        本文标题:另外一种更优雅兼容Android P获取Application的

        本文链接:https://www.haomeiwen.com/subject/uxmlbqtx.html