追风赶月莫停留,平芜尽处是春山。这篇文章主要讲述反射调用android系统级API函数相关的知识,希望能为你提供帮助。
try { Class< ?> mClass = Class.forName("com.android.server.wifi.WifiSettingsStore"); Constructor con=mClass.getDeclaredConstructor(Context.class); if(!con.isAccessible()){ con.setAccessible(true); } Object store = con.newInstance(this); Method[] methods = mClass.getDeclaredMethods(); Method method = null; for(Method m:methods){ if(m.getName().equalsIgnoreCase("getPersistedScanAlwaysAvailable")){ method = m; break; } } if(!method.isAccessible()){ method.setAccessible(true); } Object a = method.invoke(store); Log.e("a", a.toString()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }
android系统级api中含有大量的类,当然这些底层类都会被public的api链接到,但有时候你可能须要突破系统的限制做一些事情,那这个时候反射就成了利器。
这里不会讲反射意义,给出上面的样例,主要是为了说明。在系统中,凡是存在的类,我们都能够拿到事实上例。
【反射调用android系统级API函数】从而调用当中的私有属性(非final)和私有方法,从而越过系统的限制。
推荐阅读
- Android 应用内多语言切换
- Hibernate报错org.hibernate.MappingException: Unknown entity: 。。。。
- android开发之使用SQLite数据库(db文件)
- Xamarin.Android之下拉刷新
- Android的布局方式
- APP微信支付Java后台的实现(springmvc)
- 数据库并行性的数据仓库类型
- 星型和雪花模式之间的区别
- 日常必备的10种最佳软件开发工具合集介绍