请求权限 window 强制应用程序停止
request permission window force application to stop
我需要为 API 级别 23 以及出现对话框 window 和应用程序进入后台的位置手动请求权限。
这是我的代码:
@Override
public void onDialogDone(int dialog, boolean result) {
DialogFragment newFragment;
switch (dialog) {
case EULA_DIALOG:
if (result) {
boolean numberExists = _appRegistration.checkPhoneNumber();
if (!numberExists) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_PHONE_STATE_READ);
return;
} else {
//do some work
}
} else {
Intent intent = new Intent(...);
startActivity(intent);
finish();
}
break;....
}
}
此外,在 MainActivity 中我重写了以下方法:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_PHONE_STATE_READ: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// do some work
} else {
// do some work
}
return;
}
}
但如果我点击 "allow" 或 "deny",则不会调用此方法,因为应用程序处于后台模式...我记录了 onPause
和 onStop
方法并且在显示权限 window 后调用它们。
试试这个
if (!numberExists) {
ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_PHONE_STATE_READ);
return;
这样您就可以从您的 activity 开始请求,并且会收到回调。
MainActivity 有问题,在清单文件中配置为:
android:noHistory="true"
我刚刚删除了这个 属性 并且应用程序开始按预期运行。
我需要为 API 级别 23 以及出现对话框 window 和应用程序进入后台的位置手动请求权限。
这是我的代码:
@Override
public void onDialogDone(int dialog, boolean result) {
DialogFragment newFragment;
switch (dialog) {
case EULA_DIALOG:
if (result) {
boolean numberExists = _appRegistration.checkPhoneNumber();
if (!numberExists) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_PHONE_STATE_READ);
return;
} else {
//do some work
}
} else {
Intent intent = new Intent(...);
startActivity(intent);
finish();
}
break;....
}
}
此外,在 MainActivity 中我重写了以下方法:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_PHONE_STATE_READ: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// do some work
} else {
// do some work
}
return;
}
}
但如果我点击 "allow" 或 "deny",则不会调用此方法,因为应用程序处于后台模式...我记录了 onPause
和 onStop
方法并且在显示权限 window 后调用它们。
试试这个
if (!numberExists) {
ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_PHONE_STATE_READ);
return;
这样您就可以从您的 activity 开始请求,并且会收到回调。
MainActivity 有问题,在清单文件中配置为:
android:noHistory="true"
我刚刚删除了这个 属性 并且应用程序开始按预期运行。