【发布时间】:2020-12-27 20:58:46
【问题描述】:
我的应用需要 2 个权限 = 位置和录制音频。我检查,如果它被批准,如果没有,我请求许可。我请求许可的代码看起来像这样=
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// ask for permission
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, locationListener);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
// ask for permission
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 2);
}
}
我的 onRequestPermissionsResult 方法如下所示=
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch(requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, locationListener);
}
}
case 2:
permissionToRecordAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
break;
}
}
当我在手机上安装 apk 并更改为该活动时,我需要这 2 个权限,应用程序在后台崩溃,但位置的权限窗口仍然打开,当我授予它并重新打开应用程序时,更改为该活动,我只需要授予位置权限,一切正常。为什么我的应用程序崩溃?当我只有位置权限时,它工作正常,插入录音权限后,它会关闭。当我在模拟器上运行它时,它不会崩溃。
【问题讨论】:
-
显示你的异常堆栈跟踪
标签: java android permissions