Не появляется окно разрешений при нажатии кнопки - Android Studio - PullRequest
0 голосов
/ 29 мая 2020

Когда я запускаю приложение, во время выполнения оно не запрашивает разрешения, но после нажатия кнопки «Назад» появляется всплывающее сообщение о разрешении. Я не могу найти ошибку.

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);
}

1 Ответ

0 голосов
/ 29 мая 2020

Прежде всего, будьте осторожны, объявляя это разрешение также в манифесте. Если это не сработает. Вы можете использовать простую библиотеку разрешений, которая упрощает запрос разрешений.

Простая реализация разрешений:

implementation 'pub.devrel:easypermissions:3.0.0'

после этого вы реализуете библиотеку, используйте этот код во время выполнения в вашей MainActivity. код ниже:

public class MenuActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks

После того, как вы реализуете код в верхних 3 методах, вы можете справиться с ситуацией по-своему.

@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();
    }
}
...