android - Android如何在OREO的第一个运行时运行权限
问题描述
我希望用户在第一次打开应用程序时应该询问而不是第二次。这个错误是在 oreo 版本上
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// only for gingerbread and newer versions
Dexter.withActivity(getActivity())
.withPermissions(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA, Manifest.permission.CALL_PHONE
)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
// check if all permissions are granted
if (report.areAllPermissionsGranted()) {
// do you work now
}
// check for permanent denial of any permission
if (report.isAnyPermissionPermanentlyDenied()) {
// permission is denied permenantly, navigate user to app settings
}
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
token.continuePermissionRequest();
}
})
.onSameThread()
.check();
}
解决方案
我正在使用从 6.0 到 9.0 的这段代码,它可以工作。内部onCreate()
方法。添加这个。
笔记 PERMISSION_REQUEST_CODE == 1
这只是运行时权限的示例代码。你可以改变它
if (ContextCompat.checkSelfPermission(Login.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Login.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_CODE);
}
if (ContextCompat.checkSelfPermission(Login.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Login.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_CODE);
}
if (ContextCompat.checkSelfPermission(Login.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Login.this, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_REQUEST_CODE);
}
推荐阅读
- docker - Docker 上 Quarkus 和 Keycloak 的配置
- ios - 快速滑出带有子类别的栏
- sql - sql删除重复行
- reactjs - 为什么Pressable组件的涟漪效应只在长按时触发
- modbus - 使用 Python / ModBUS 从 Carlo Gavazzi EM24-DIN.AV5 读取寄存器时出现问题
- amazon-web-services - AWS Amplify:更改身份验证资源名称
- python - 如何通过表格抓取数据?
- android - 如何在Android中将图标垂直对齐到第一行textview的中心
- javascript - Flipclock 有一个额外的小时
- android - Android应用程序图标快捷方式未启动活动