禁用 "don't ask again" 用户第二次拒绝权限时出现的单选按钮
Disable "don't ask again" radio button that appears if users deny permissions a second time
我的应用需要权限才能 运行。如果用户拒绝初始 运行 的权限,它将关闭。如果他们第二次 运行 应用程序并再次拒绝权限,则第三次尝试 运行 应用程序并请求权限时,对话框中还会出现一个单选按钮,选项为 "Don't ask again"。如果用户单击该应用程序将关闭,下次他们 运行 将不会询问它的权限,从而导致无休止的循环漏洞。用户将打开应用程序并且它将永远崩溃,除非他们卸载并重新安装应用程序。我们如何解决这个问题?我们可以编写代码,使单选按钮永远不会出现,无论用户拒绝权限多少次?我还有其他不明显的方法吗?我可以说这将是一个挑战...
public void requestPermissions() {
//Requesting permissions.
ActivityCompat.requestPermissions(this,new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
}, REQUEST_PERMISSION_CODE);
}
public boolean checkPermissionFromDenice() {
//Checking whether permissions have been granted.
int write_external_storage_result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int record_audio_result = ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
return write_external_storage_result == PackageManager.PERMISSION_GRANTED && record_audio_result == PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//Returns user's input regarding the requested permissions.
if (requestCode == REQUEST_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
finish(); //Killing the activity in case user accepts permissions so they set in.
} else {
Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show();
finishAffinity(); //Terminating the application in case user denies permissions.
}
}
}
您应该针对不愿授予权限的用户强化您的应用。您应该警告他们该应用程序将无法运行,如果以后未授予权限,请向用户说明如何重置其权限设置,否则拒绝 运行 应用程序的其余部分。
请注意,这是一项严厉的措施,只有在您的应用程序的功能绝对需要该权限的情况下,您才应该这样做。如果有一些功能在没有这个特定权限的情况下仍然可用,那么您仍然应该允许用户使用它们。
我的应用需要权限才能 运行。如果用户拒绝初始 运行 的权限,它将关闭。如果他们第二次 运行 应用程序并再次拒绝权限,则第三次尝试 运行 应用程序并请求权限时,对话框中还会出现一个单选按钮,选项为 "Don't ask again"。如果用户单击该应用程序将关闭,下次他们 运行 将不会询问它的权限,从而导致无休止的循环漏洞。用户将打开应用程序并且它将永远崩溃,除非他们卸载并重新安装应用程序。我们如何解决这个问题?我们可以编写代码,使单选按钮永远不会出现,无论用户拒绝权限多少次?我还有其他不明显的方法吗?我可以说这将是一个挑战...
public void requestPermissions() {
//Requesting permissions.
ActivityCompat.requestPermissions(this,new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
}, REQUEST_PERMISSION_CODE);
}
public boolean checkPermissionFromDenice() {
//Checking whether permissions have been granted.
int write_external_storage_result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int record_audio_result = ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
return write_external_storage_result == PackageManager.PERMISSION_GRANTED && record_audio_result == PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//Returns user's input regarding the requested permissions.
if (requestCode == REQUEST_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
finish(); //Killing the activity in case user accepts permissions so they set in.
} else {
Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show();
finishAffinity(); //Terminating the application in case user denies permissions.
}
}
}
您应该针对不愿授予权限的用户强化您的应用。您应该警告他们该应用程序将无法运行,如果以后未授予权限,请向用户说明如何重置其权限设置,否则拒绝 运行 应用程序的其余部分。
请注意,这是一项严厉的措施,只有在您的应用程序的功能绝对需要该权限的情况下,您才应该这样做。如果有一些功能在没有这个特定权限的情况下仍然可用,那么您仍然应该允许用户使用它们。