我在活动中有一个对话框。现在隐藏对话框,然后显示一个权限请求对话框并拒绝该请求。隐藏的对话框将自动显示。
这是我的测试代码: (1)显示一个对话框:
BT_showDialog = (Button)findViewById(R.id.BT_showDialog);
BT_showDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//create & show dialog
Log.d("TestLog","create & show dialog");
final Dialog dialog = new Dialog(MainActivity.this);
Button bt_hideDialog = new Button(MainActivity.this);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
bt_hideDialog.setLayoutParams(params);
bt_hideDialog.setText("Hide Dialog.");
bt_hideDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(dialog != null){
Log.d("TestLog","Hide button clicked");
dialog.hide();
}
}
});
dialog.setContentView(bt_hideDialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
});
(2)单击“隐藏对话框”以隐藏此对话框,然后单击“请求按钮”以请求一些权限以使设备显示权限对话框。
BT_showPermissionDailog = (Button)findViewById(R.id.BT_showPermissionDailog);
BT_showPermissionDailog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TestLog","Request permission");
if(Build.VERSION.SDK_INT >=23){
//camera
int result = MainActivity.this.checkSelfPermission(Manifest.permission.CAMERA);
if(result != PackageManager.PERMISSION_GRANTED){
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.CAMERA)) {
}
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},1);
}
}
}
});
(3)拒绝此权限。关闭权限对话框后,将自动显示隐藏的对话框。单击“隐藏对话框”可以看到日志“单击了隐藏按钮”,但是没有任何效果。