/**
* 设置对话框是否打开
* @param dialog 对话框
* @param isOpened true:对话框开着,false:对话框关闭
*/
private void dialogIsOpened(DialogInterface dialog, boolean isOpened) {
Class clzDialog=dialog.getClass();
//clzDialog=class android.app.AlertDialog
System.out.println("clzDialog=" + clzDialog);
Class clsSuperDialog=clzDialog.getSuperclass();
System.out.println("clsSuperDialog="+clsSuperDialog);
try {
//得到Dialog类中的成员变量 private boolean mShowing = false;对应的Field类型的对象
//如果mShowing=true则对话框可以关闭,false:表示对话框不可以关闭
Field field_mShowing=clsSuperDialog.getDeclaredField("mShowing");
//是否取消java语法检查,true:是,false: 否
field_mShowing.setAccessible(true);
//给mShowing赋值
field_mShowing.set(dialog,isOpened);
//正常的赋值:dialog.mShowing=isOpened;
//通过反射的赋值方式为:mShowing.set(dialog,isOpened);
} catch (Exception e) {
e.printStackTrace();
}
}