Java Android - 请求多个权限,但没有请求一个
Java Android - Requesting multiple permissions but one doesn't get requested
所以我正在尝试向用户请求位置和相机权限,并且我的应用程序除了必须向用户请求位置权限的部分之外都可以正常工作。用户永远不会收到访问位置的请求。甚至可以请求 2 个不同的权限并让 onRequestPermissionsResults 在同一个 class?
中处理它们
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
HomePageActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_LOCATION_PERMISSION
);
} else {
getCurrentLocation();
}
askCameraPermissions();
}
这就是它的开头,然后我想它就在这里
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_CODE_LOCATION_PERMISSION:
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getCurrentLocation();
} else {
Toast.makeText(this, "Permission denied", Toast.LENGTH_LONG).show();
}
}
break;
case CAMERA_PERM_CODE:
//if both are true then user has granted requests
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
dispatchTakePictureIntent();
} else {
Toast.makeText(this, "Camera permission is required to Use camera.", Toast.LENGTH_SHORT).show();
}
break;
}
}
'''
除了我认为这是应用程序出错的地方。相机请求和许可工作完美,我能够继续并让我的相机方法正常工作。然而,当谈到位置权限时,正如我所说,用户永远不会被提示允许权限,所以我认为这里出了问题。感谢任何帮助,这是我的第一个 post,所以格式可能会出现错误。
我试过post只有相关代码。如果需要,我会 post 更多
而不是两次请求许可,这会导致问题,您实际上可以一次请求它,例如
....
ActivityCompat.requestPermissions(
HomePageActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CAMERA},
REQUEST_CODE_MULTIPLE_PERMISSION
);
....
如果您仍想请求单独的许可,那么您应该在第一个结果到达后请求。
编辑
在询问访问精确位置的同时,您还应该询问粗略位置
所以我正在尝试向用户请求位置和相机权限,并且我的应用程序除了必须向用户请求位置权限的部分之外都可以正常工作。用户永远不会收到访问位置的请求。甚至可以请求 2 个不同的权限并让 onRequestPermissionsResults 在同一个 class?
中处理它们 @Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
HomePageActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_LOCATION_PERMISSION
);
} else {
getCurrentLocation();
}
askCameraPermissions();
}
这就是它的开头,然后我想它就在这里
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_CODE_LOCATION_PERMISSION:
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getCurrentLocation();
} else {
Toast.makeText(this, "Permission denied", Toast.LENGTH_LONG).show();
}
}
break;
case CAMERA_PERM_CODE:
//if both are true then user has granted requests
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
dispatchTakePictureIntent();
} else {
Toast.makeText(this, "Camera permission is required to Use camera.", Toast.LENGTH_SHORT).show();
}
break;
}
}
'''
除了我认为这是应用程序出错的地方。相机请求和许可工作完美,我能够继续并让我的相机方法正常工作。然而,当谈到位置权限时,正如我所说,用户永远不会被提示允许权限,所以我认为这里出了问题。感谢任何帮助,这是我的第一个 post,所以格式可能会出现错误。
我试过post只有相关代码。如果需要,我会 post 更多
而不是两次请求许可,这会导致问题,您实际上可以一次请求它,例如
....
ActivityCompat.requestPermissions(
HomePageActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CAMERA},
REQUEST_CODE_MULTIPLE_PERMISSION
);
....
如果您仍想请求单独的许可,那么您应该在第一个结果到达后请求。
编辑
在询问访问精确位置的同时,您还应该询问粗略位置