gpt4 book ai didi

java - 拒绝设置中的权限

转载 作者:行者123 更新时间:2023-11-30 00:01:38 24 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,为了获得权限,我正在使用 Easy Permissions library .一切正常,直到用户拒绝“设置”中的任何权限。

enter image description here

  • 然后,此对话框始终连续显示,直到用户接受许可。
  • 如果用户按下“不再询问”,智能手机会变得不稳定,重新启动应用程序,但不会显示对话框。
  • 如果用户关闭应用程序,它会一次又一次地启动,直到用户转到“设置”并接受被拒绝的权限。

我正在使用 Samsung Galaxy S6 和 Android Nougat (7.0) 测试应用程序,我不知道这是系统问题,还是我的代码中做错了什么。

这是我的 MainActivity 类,其中实现了 EasyPermission 库:

public class MainActivity extends AppCompatActivity implements  
EasyPermissions.RationaleCallbacks,
EasyPermissions.PermissionCallbacks{

private static String[] PERMS =
{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.GET_ACCOUNTS};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if(EasyPermissions.hasPermissions(this, PERMS)){
create();
} else {
ActivityCompat.requestPermissions(this, PERMS, 0);
}
}

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults){
super.onRequestPermissionsResult(requestCode,
permissions,
grantResults);

EasyPermissions.onRequestPermissionsResult(requestCode,
permissions,
grantResults,
this);
}

@Override
public void onPermissionsGranted(int requestCode,
@NonNull List<String> perms) {
if(EasyPermissions.hasPermissions(getApplication(), PERMS)) {
create();
}
}

@Override
public void onPermissionsDenied(int requestCode,
@NonNull List<String> perms) {
finishAffinity();
}

@Override
public void onRationaleAccepted(int requestCode) {

}

@Override
public void onRationaleDenied(int requestCode) {

}

public void create() { ... }
}

最佳答案

在您的 onRequestPermissionsResult 中,您再次调用了 EasyPermissions,这形成了一个循环。将您的 onRequestPermissionsResult 更改为:

int permissionCheck = PackageManager.PERMISSION_GRANTED;
for (int permission : grantResults) {
permissionCheck = permissionCheck + permission;
}
if ((grantResults.length > 0) && permissionCheck == PackageManager.PERMISSION_GRANTED) {
create()
}

关于java - 拒绝设置中的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49821869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com