如题,这是适配小米沉浸式的,部分代码如下:
var _Build = plus.android.importClass('android.os.Build');
var _Window = plus.android.importClass('android.view.Window');
var _View = plus.android.importClass('android.view.View');
var _Color = plus.android.importClass('android.graphics.Color');
var _activity = plus.android.runtimeMainActivity();
var _window = _activity.getWindow();
if(_Build.VERSION.SDK_INT >= _Build.VERSION_CODES.M) {
if(_Build.MANUFACTURER == 'Xiaomi') {
var _Class = plus.android.importClass('java.lang.Class');
var _MiuiWindowManager = plus.android.importClass('android.view.MiuiWindowManager');
var _MiuiPhoneWindow = plus.android.importClass('com.android.internal.policy.MiuiPhoneWindow');
var _Field = plus.android.importClass('java.lang.reflect.Field');
var _Integer = plus.android.importClass('java.lang.Integer');
var _Method = plus.android.importClass('java.lang.reflect.Method');
var params = _Class.forName("android.view.MiuiWindowManager$LayoutParams");
var field = params.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
var dardModeFlag = field.getInt(params);
var clazz = _window.getClass();
var extraFlagField = clazz.getMethod("setExtraFlags", _Integer.TYPE, _Integer.TYPE);
extraFlagField.invoke(_window, dardModeFlag, dardModeFlag);
//_window.setStatusBarColor(_Color.DKGRAY);
} else {
var dectorView = _window.getDecorView();
//设置系统状态栏底色为亮
dectorView.setSystemUiVisibility(_View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
_View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
这里调用getMethod时候会报错,尝试用getMethods获取所有方法并遍历得到想要的Method,方法可以得到但是调用就报错(Uncaught Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Method.getReturnType()' on a null object reference),参数传递没错,我尝试调用无参的方法发现参数里面必须要有一个null可以调用成功,有参的调用就报同样的错,忘哪位大佬帮忙解决
2 个回复
g***@126.com
请问解决了吗?
5***@qq.com
请问解决了吗?