申请授权样例的代码如下, 不想用V4包中的ContextCompat 这些, 直接用系统的API。
public void onCreate(){
if(Build.VERSION.SDK_INT >= 23){ // 6.0及以上需要动态申请定位权限
int chkPermission = checkSelfPermission(permission.ACCESS_FINE_LOCATION);
if(PackageManager.PERMISSION_GRANTED != chkPermission){
boolean should = shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION);
if(should){
Toast.makeText(this, "需要申请定位权限用于蓝牙搜索", Toast.LENGTH_SHORT).show();
}
requestPermissions(new String[]{permission.ACCESS_FINE_LOCATION}, 111);
}else{
onRequestPermissionsResult(111, new String[]{permission.ACCESS_FINE_LOCATION}, new int[]{PackageManager.PERMISSION_GRANTED});
}
}else{
onRequestPermissionsResult(111, new String[]{permission.ACCESS_FINE_LOCATION}, new int[]{PackageManager.PERMISSION_GRANTED});
}
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if(Build.VERSION.SDK_INT >= 23){
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
当targetSdk设置为23以下的时候,checkSelfPermission(permission.ACCESS_FINE_LOCATION); 一直都是 PERMISSION_GRANTED,解决办法为把targetSdkVersion版本修改成23或以上。