您的位置:首页 > 其它

反射获得getSystemService()的方法

2017-08-25 09:53 806 查看
最近做项目的时候,获取服务STATUS_BAR_SERVICE的管理类时,setSystemControlCenterEnable(Boolean b)这个方法在studio报红,无法使用,因此想到利用反射获取

StatusBarManager mStatusBarManager = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);
mStatusBarManager.setSystemControlCenterEnable(!enable);


反射后的代码如下,具体反射内容就不再叙述了,直接上代码

protected void changeNavigation(boolean flag) {
try {
StatusBarManager mStatusBarManager = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);

final Method setSystemControlCenterEnable =Class.forName("android.app.StatusBarManager").getMethod("setSystemControlCenterEnable",new Class[]{boolean.class});
setSystemControlCenterEnable.invoke(mStatusBarManager,new Object[]{new Boolean(flag)});
}catch (Exception e){
e.printStackTrace();
}
}


值得注意的是获取管理类那行不用反射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: