java - Android - 获取运行时权限的问题

标签 java android

在我的应用程序中,我获得了运行时权限。
这是我如何获取请求

ActivityCompat.requestPermissions(IntroductionSlider.this,String[]{ Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE);

这是如何获得结果

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


    boolean flag=false;
    if(requestCode == REQUEST_CODE){

        if(grantResults.length>0){
            if(grantResults[0]==PackageManager.PERMISSION_GRANTED && grantResults[1]==PackageManager.PERMISSION_GRANTED && grantResults[2]==PackageManager.PERMISSION_GRANTED){
                flag=true;
            }
        }

        if(flag){
            Toast.makeText(IntroductionSlider.this,"Granted",Toast.LENGTH_LONG).show();

            startActivity(new Intent(IntroductionSlider.this,oneTimeValidation.class));
            finish();
        }else {


            Toast.makeText(IntroductionSlider.this,"Goto to setting->Apps->My market->Permissions grant all permissions to proceed",Toast.LENGTH_LONG).show();
        }
        return;
    }

}

我的问题是,尽管我在运行时拒绝某些权限。我在if block 中得到了toast“授予”即。不知道为什么会发生这种情况
谁能帮帮我吗?

最佳答案

为每个权限设置 boolean 值并检查,如果所有权限都允许,则只有 toast 才会显示已授予的权限,否则将显示权限被拒绝。我已经在我的应用程序上使用了它的可行代码。

引用:https://www.android-examples.com/request-check-multiple-runtime-permissions-android-marshmallow/

使用下面的代码,

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {

        case RequestPermissionCode:

            if (grantResults.length > 0) {

                boolean CameraPermission = grantResults[0] == PackageManager.PERMISSION_GRANTED;
                boolean ReadContactsPermission = grantResults[1] == PackageManager.PERMISSION_GRANTED;
                boolean ReadPhoneStatePermission = grantResults[2] == PackageManager.PERMISSION_GRANTED;

                if (CameraPermission && ReadContactsPermission && ReadPhoneStatePermission) {

                    Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(MainActivity.this,"Permission Denied",Toast.LENGTH_LONG).show();

                }
            }

            break;
    }
}

关于java - Android - 获取运行时权限的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48605004/

相关文章:

java - 我可以轻松地将 EJB3 Remote 与 RAD 框架结合使用吗?

java - 滑动 Recyclerview 删除滑动项目但再次添加最后一项

android - Firestore 查询不会进入响应

android - Session.openActiveSession 仅在 Facebook Android SDK 中调用 OPENING

android - 禁用 Listview 上的涟漪效应

java - 如何使用父类(super class)实例在运行时访问子类字段

java - 图像变换导致红色图像?

java - 使用java代码将MySQL数据库导出到excel

android - 如何打开具有特定设置的 URL?

android - joda-time datepicker Android 没有计算正确的日期