android版本兼容问题总结

    以下是我在开发过程中遇到的android版本兼容需要注意的几个地方(会继续补充):
一、 api 19 4.4以下,不能获取通知的开关状态
1. 4.4以上获取状态:
```
NotificationManagerCompat manager = NotificationManagerCompat.from(MyApplication.getInstance().getContext());
        boolean isOpened = manager.areNotificationsEnabled();
```
2. 跳转到权限设置:
// 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
```
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", MyApplication.getInstance().getPackageName(), null);
                    intent.setData(uri);
                    startActivity(intent);
```


二、 安装权限
1. 22 之前,也就是android5.1之前包括5.1,在清单文件中注册过的权限默认都是开启状态的,但是23之后,默认的就是没有开启,所以,我们只需要吧targetSdkVersion改为小于22就可以了,这样用户安装后权限默认就是给予的状态,就解决了这个问题。不过api小于22时不能弹出运行时权限弹窗,如果用户关了,只能提示用户去设置里开启权限;


三、 全局悬浮按钮
1. 7.0以上,使用TYPE_PHONE,是应用内全局;7.0以下,使用TYPE_TOAST,是系统级全局;


四、 关于定位的运行时权限
1. targetSDKVersion < 23 & API(手机系统) < 6.0:安装时默认获得权限,且用户无法在安装App之后取消权限。
2. targetSDKVersion >= 23 & API(手机系统) < 6.0:安装时默认获得权限,且用户无法在安装App之后取消权限。
3. targetSDKVersion < 23 & API(手机系统) >= 6.0:安装时默认获得权限,但是用户可以在安装App完成后动态取消授权。
4. targetSDKVersion >= 23 & API(手机系统) >= 6.0:安装时不会获得权限,可以在运行时向用户申请权限。用户授权以后仍然可以在设置界面中取消授权。


五、 js交互
1. 4.2以下,h5通过webview与原生交互有安全问题;


六、 虚拟机
1. android从5.0开始,虚拟机由原来的Dalvik虚拟机改成了ART(android run time)虚拟机;


七、 状态栏
1. android6.0 api23之后才可以设置状态栏字体颜色;

猜你喜欢

转载自blog.csdn.net/qq_23081779/article/details/80876373