# 注意事项
# 动态权限申请
Google在Android 6.0中引入了动态权限获取机制(Runtime Permission),使得Android的权限管理更加严格完善。 动态权限获取要求开发者在调用涉及相关权限的代码时,使用系统接口来动态得申请相应权限。
//SDK在Android 6.0及以上需要动态检测位置和读写权限如下: Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
//以位置权限为例 ,检测权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
//已经授权
} else {//没有权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_LOCATION_CODE);//申请授权
}
// 在请求权限后,系统会弹出相应的Dialog提示用户授予权限,用户选择允许或拒绝后,会回调onRequestPermissionsResult方法。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_LOCATION_CODE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] ==PackageManager.PERMISSION_GRANTED) {
// Permission Granted 授予权限
//处理授权之后逻辑
} else {
// Permission Denied 权限被拒绝
}
break;
default:
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
在未获取到位置权限情况下,SDK无法有效使用。 开发者可以简单的使用系统API来判断用户是否打开了位置按钮,检测到系统版本为6.0,并且用户未打开按钮时,进行提示。
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
// 未打开位置开关,可能导致sdk无法使用,提示用户或做相应处理
}
# 读写文件
在安卓10申请了读写权限有时会出现还是不能读取文件,解决方法就是在AndroidManifest.xml文件中的application标签添加如下属性:android:requestLegacyExternalStorage="true"。
# http请求
运行 Android P 及以上系统的安卓设备运行targetSdkVersion 27及以上的APK 使用http请求会出现网络异常(CLEARTEXT communication ** not permitted by network security policy),针对此问题,可在androidmanifest.xml的 application标签上加入 android:usesCleartextTraffic="true"。
# 错误返回码
通过泛舟监听器UbiboatListener回调方法中baseUbiboatResp参数的getStatus 方法来获取错误返回码。各错误返回码的具体说明如下:
返回值 | 描述 |
---|---|
1 | 正常 |
2 | 用户设备蓝牙关闭 |
3 | 没有读写权限 |
4 | 没有绑定泛舟服务 |
5 | 用户设备不支持低功耗蓝牙 |
6 | 没有传入context |
7 | 请求没有查询到合适数据 |
8 | 请求的服务秘钥不匹配 |
9 | 服务异常 |
10 | 用户设备位置服务开关未打开 |
11 | 秘钥为空 没有配置秘钥 |
12 | 用户设备WIFI关闭 |
# 兼容性
支持 Android 4.4 及以上系统。
← 其他接口