Android6.0 获取定位权限
程序员文章站
2024-01-21 22:54:16
...
private static final int BAIDU_READ_PHONE_STATE = 100;//定位权限请求
private static final int PRIVATE_CODE = 1315;//开启GPS权限
private LocationManager lm;
/**
* 检测GPS、位置权限是否开启
*/
public void showGPSContacts() {
//得到系统的位置服务,判断GPS是否**
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean ok = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (ok) {//开了定位服务
if (Build.VERSION.SDK_INT >= 23) { //判断是否为android6.0系统版本,如果是,需要动态添加权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PERMISSION_GRANTED) {// 没有权限,申请权限。
ActivityCompat.requestPermissions(this, LOCATIONGPS, BAIDU_READ_PHONE_STATE);
} else {
initLocationOption();//有权限,进行相应的处理
}
} else {
initLocationOption();//有权限,进行相应的处理
}
} else {
Toast.makeText(this, "系统检测到未开启GPS定位服务,请开启", Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, PRIVATE_CODE);
}
}
/**
* Android6.0申请权限的回调方法
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
// requestCode即所声明的权限获取码,在checkSelfPermission时传入
case BAIDU_READ_PHONE_STATE:
//如果用户取消,permissions可能为null.
if (grantResults[0] == PERMISSION_GRANTED && grantResults.length > 0) { //有权限
// 获取到权限,作相应处理
initLocationOption();//有权限,进行相应的处理
} else {
/*
* 无权限
* */
Toast.makeText(this, "你未开启定位权限!", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
static final String[] LOCATIONGPS = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
};
上一篇: Laravel设置全局变量
下一篇: PHP教程.程序控制_PHP