点击按钮时不弹出权限框- Android Studio

问题描述 投票:0回答:1

我运行这个应用时,在运行时并没有要求权限,但点击返回按钮后,弹出消息要求权限。我无法找出错误的地方。

public void onClickSignUp(View view){
    String permission = Manifest.permission.RECEIVE_SMS;
    int grant = ContextCompat.checkSelfPermission(this, permission);

    Intent intent = new Intent(FirstTimeUserPage.this,SignUpActivity.class);
    if ( grant != PackageManager.PERMISSION_GRANTED) {
        String[] permission_list = new String[1];
        permission_list[0] = permission;
        ActivityCompat.requestPermissions(this, permission_list, 1);
    }
    startActivity(intent);
}
android android-studio-3.0
1个回答
0
投票

首先要注意在manifest中声明这些权限,如果不行的话,可以使用easy permission库,这样就可以轻松地请求权限了。

简单的权限实现。

implementation 'pub.devrel:easypermissions:3.0.0'

在你实现这个库之后,在运行时在你的MainActivity中使用这个代码。

String[] perms = {Manifest.permission.RECEIVE_SMS};
    if (!EasyPermissions.hasPermissions(this, perms)) {
        EasyPermissions.requestPermissions(this, "We need this permission",
                123, perms);
    }

为了处理权限是否被授予的问题,在你的活动中使用下面的代码来实现。

public class MenuActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks

在你实现了上面的代码之后,你可以用你的方式来处理这种情况。

@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) {
}

@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
    if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
        new AppSettingsDialog.Builder(this).build().show();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.