android fragment 中请求位置权限
时间: 2024-02-01 15:03:38 浏览: 136
Android 6.0权限申请详解及权限资料整理
在 Android 中请求位置权限需要使用运行时权限。以下是在 Fragment 中请求位置权限的基本步骤:
1. 在 AndroidManifest.xml 文件中添加定位权限:
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
```
2. 在 Fragment 中重写 onRequestPermissionsResult() 方法:
```java
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_LOCATION_PERMISSION && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,执行相关操作
}
}
```
3. 在 Fragment 中判断是否拥有位置权限:
```java
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 未授予权限,请求授权
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
} else {
// 已授予权限,执行相关操作
}
```
4. 在 onRequestPermissionsResult() 方法中处理授权结果:
```java
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_LOCATION_PERMISSION && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,执行相关操作
}
}
```
注意:在 Android 6.0 及以上版本中,还需要动态请求定位权限。可以使用 ActivityCompat.requestPermissions() 方法请求权限。
阅读全文