android 给权限以后onActivityResult 不返回结果
时间: 2024-02-11 15:09:13 浏览: 16
在 Android 中,如果您在应用程序运行时动态请求权限,并且用户授予该权限,则不需要 `onActivityResult()` 方法来接收结果。此方法仅用于处理从其他应用程序返回结果的情况(例如,从相机或文件选择器应用程序返回结果)。
如果您使用了 `ActivityCompat.requestPermissions()` 方法来请求权限,并且用户授予了该权限,则系统将调用您在 `ActivityCompat.requestPermissions()` 方法中指定的回调方法(`onRequestPermissionsResult()`)。在此回调方法中,您可以检查用户是否授予了所请求的权限,并在需要时执行相应的操作。
以下是一个示例代码,演示如何请求权限并在用户授予该权限后执行相应的操作:
```java
private static final int REQUEST_CODE = 1;
private static final String PERMISSION = Manifest.permission.READ_CONTACTS;
// 在需要的地方调用此方法以请求权限
private void requestPermission() {
ActivityCompat.requestPermissions(this, new String[]{PERMISSION}, REQUEST_CODE);
}
// 在 onRequestPermissionsResult() 回调方法中处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了所请求的权限,执行相应的操作
// ...
} else {
// 用户拒绝了所请求的权限,执行相应的操作(例如,显示一个对话框,告诉用户需要该权限才能继续操作)
// ...
}
}
}
```
在此示例代码中,我们请求“读取联系人”权限,并在 `onRequestPermissionsResult()` 方法中处理权限请求结果。如果用户授予了该权限,我们可以执行所需的操作。否则,我们可以显示一个对话框,告诉用户需要该权限才能继续操作。