项目android 6.0,7.0 版本适配问题

记录一下项目中遇到andoid 6.0以上版本的适配问题,懒癌发作好多该总结的拖拖拉拉就忘了。
参考的博文:
http://www.tuicool.com/articles/zYniuyZ
http://blog.163.com/insightinto@126/blog/static/67383690201402455048495/
http://blog.csdn.net/lmj623565791/article/details/50709663

之前项目没有考虑到android 6.0 及以上版本的适配问题,后来再APP中加百度lbs地图时,遇到华为荣耀8定位不了的问题。
1 android 6.0以上的部分危险权限需要通过运行时动态申请。
2 android 6.0对应的api 23,将android编译版本换成23,才可以找到@TargetApi(value = Build.VERSION_CODES.M) Build.VERSION_CODES.M表示android 6.0
3 之前把最低版本设为api 16,发现代码中指定编译版本为android 6.0 也即Build.VERSION_CODES.M时找不到,将编译api改为23后,出现一些兼容错误。例如:
(1) android sdk 23,Google 移出了Apache HttpClient相关的类,推荐使用HttpUrlConnection,如果需要继续使用Apache HttpClient,需要在libs中添加org.apache.http.legacy.jar
和HttpClient一样,HttpResponse类也被移除了,解决方法如上所述,jar文件位置在sdk目录下\platforms\android-23\optional文件夹中
(2) android 6.0 The method sin(float) is undefined for the type FloatMath 报错
Android6.0使用 Math.floor 代替 FloatMath.floor 即可
(3) The method initializeScrollbars(TypedArray) is undefined for the type PLA_AbsListView
initializeScrollbars android 6.0中该方法不存在,使用反射机制找到被屏蔽

 final TypedArray a = context.getTheme().obtainStyledAttributes(new int[0]);
        try {
            // initializeScrollbars(TypedArray)
            Method initializeScrollbars = Android.view.View.class.getDeclaredMethod("initializeScrollbars", TypedArray.class);
            initializeScrollbars.invoke(this, a);
        } catch (Exception e) {
            e.printStackTrace();
        }

4 公司测试机比较少,也就后来才用高版本的手机测试,像华为荣耀8只开启app定位权限不够,还需要检测总开关定位服务有没有开启,如果没有开启总开关,检测定位权限都是无效的。所以首先检测总定位服务有没有开启。

/** 
     * 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的 
     * @param
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值