志在指尖
用双手敲打未来

Android5.0和Android6.0适配

gradle装备项
compileSdkVersion
用哪个AndroidSDK版别编译你的运用。因而咱们强烈推荐总是运用最新的SDK进行编译。在现有代码上运用新的编译检查能够获得许多好处,避免新弃用的API,并且为运用新的API做好准备。
minSdkVersion
是运用能够运转的最低要求,也是各大Android运用商铺用来判别用户设备是否能够装置某个运用的标志之一
targetSdkVersion
targetSdkVersion是Android提供向前兼容的主要依据
targetSdkVersion<渠道的API级别向前兼容举个栗子:targetSdkVersion==23(6.0),当时设备Android版别7.0,运转程序时用6.0那一套接口。接口:API接口
targetSdkVersion=渠道的API级别不启用兼容性
targetSdkVersion>渠道的API级别举个栗子:targetSdkVersion==23(6.0),当时设备Android版别是5.0,运转程序用的是5.0那套接口。设备底子到不了6.0
是不是意味着targetSdkVersion越低越好?
运用低版别API的其中一个缺乏,显示的效果比较OUT,提供的可用的接口或类比较少
高版别API会针对低版别存在的问题进行改善和完善,抛弃一下不用的类或接口,新增一些办法或特点,如果你运用的办法是在某个API被另一个办法替代的话,你可能就得在代码中区别APP是运转在哪个版别的Android体系Android
运用渠道对targetSdkVersion有要求
minSdkVersion?targetSdkVersion?compileSdkVersion
###andorid5.0新特性
MaterialDesign
支撑64位ART虚拟机。
Overview多任务视窗。
RecyclerView
卡片CardView
Palette是一个能够从图片(Bitmap)中提取色彩的帮助类,能够使UI更加漂亮,依据图片动态的显示相应的色彩
###android5.0适配
启动服务,不支撑隐式调用的问题
解决方案
运用action调用,必须指定包名启动(判别当时当时体系版别)
ComponentName传入包名和类名,必须是完好类名途径。
android5.0getRunningTasks和getRunningAppProcesses(仅回来当时运用包名)失效
解决方案
第一种办法,用UsageStatsManager,需求权限,且只针对体系运用有效,并且要翻开设置页面。
第二种,不需求权限,外国的一个开源项目:https://github.com/jaredrummler/AndroidProcesses(Android7.0后不收效)
backgroundTint特点只能在5.0以上的api中调用
解决方案
咱们能够新建一个values-v21文件夹,这个里边声明的特点会在api21以上的机器上优先于values文件夹中履行
AndroidAPI21(5.0)引入了一个Drawable的子类VectorDrawable
解决方案(https://www.jianshu.com/p/0972a0d290e9)
minSdkVersion<21:如果想要烘托矢量图的话必须在app模块的build.gralde文件里添加一行代码:
defaultConfig{vectorDrawables.useSupportLibrary=true}
在Application或许Activity上加上AppCompateDelegate敞开CompatVectorFromResources支撑
Button,TextView,运用矢量图,稳妥的是先把矢量图转为selector,然后selector替代矢量图运用
Android5.0上WebView中Http和Https混合问题
解决方案
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
WebViewcookie存储问题
publicstaticvoidsyncCookie(Stringurl,Stringkey){
CookieManagercookieManager=CookieManager.getInstance();if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
cookieManager.removeSessionCookies(null);
cookieManager.flush();
}else{
cookieManager.removeSessionCookie();
CookieSyncManager.getInstance().sync();
}
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(url,key);
}
JobScheduler和JobService是安卓在api21中添加的接口(保活),功用更强的闹钟
###Android6.0适配及新特性
运转时权限,请必须在运转时检查和恳求权限
NormalPremission:一般权限
DangerousPermission/Group:危险权限/组
android.permission.READ_CALENDAR答应程序读取用户日历数据android.permission.WRITE_CALENDAR答应一个程序写入但不读取用户日历数据android.permission.CAMERA,答应拜访摄像头进行摄影android.permission.READ_CONTACTS答应程序读取用户联系人数据android.permission.WRITE_CONTACTS答应程序写入但不读取用户联系人数据android.permission.GET_ACCOUNTS拜访一个帐户列表在AccountsService中android.permission.ACCESS_FINE_LOCATION答应一个程序拜访精良方位(如GPS)android.permission.ACCESS_COARSE_LOCATION答应一个程序拜访CellID或WiFi热点来获取大略的方位android.permission.RECORD_AUDIO答应程序录制音频android.permission.CALL_PHONE答应一个程序初始化一个电话拨号不需经过拨号用户界面需求用户确认android.permission.READ_PHONE_STATE拜访电话状况android.permission.READ_CALL_LOG检查电话日志android.permission.WRITE_CALL_LOG写入电话日志android.permission.ADD_VOICEMAIL答应运用程序添加体系中的语音邮件android.permission.USE_SIP答应程序运用SIP视频服务android.permission.PROCESS_OUTGOING_CALLS答应运用程序监督、修正、疏忽拨出的电话android.permission.BODY_SENSORS答应该运用存取监测您身体状况的传感器所搜集的数据,例如您的心率android.permission.SEND_SMS答应程序发送SMS短信android.permission.RECEIVE_SMS答应程序监控一个将收到短信息,记载或处理android.permission.READ_SMS答应程序读取短信息android.permission.RECEIVE_WAP_PUSH答应程序监控将收到WAPPUSH信息android.permission.RECEIVE_MMS答应一个程序监控将收到MMS彩信,记载或处理android.permission.WRITE_EXTERNAL_STORAGE答应程序写入外部存储,如SD卡上写文件android.permission.READ_EXTERNAL_STORAGE拜访您设备上的相片、媒体内容和文件
撤销支撑ApacheHTTP
解决方案:android{useLibrary’org.apache.http.legacy’}
BoringSSL请勿链接到并非NDKAPI组成部分的加密库,如libcrypto.so和libssl.so
硬件标识符拜访权
WifiInfo.getMacAddress()办法和BluetoothAdapter.getAddress()办法现在会回来常量值02:00:00:00:00:00。
现在想拜访硬件标识,如:WiFi和蓝牙,必须要有ACCESS_FINE_LOCATION或许ACCESS_COARSE_LOCATION权限
WifiManager.getScanResults()
BluetoothDevice.ACTION_FOUND
BluetoothLeScanner.startScan()
AudioManager类不再支撑直接设置音量或将特定音频流静音
setStreamSolo()办法已弃用,您应该改为调用requestAudioFocus()办法。
setStreamMute()办法也已弃用,请改为调用adjustStreamVolume()办法并传入方向值ADJUST_MUTE或ADJUST_UNMUTE
相机服务变更
相机服务中共享资源的拜访形式已从之前的“先到先得”拜访形式更改为高优先级进程优先的拜访形式
dlopenfailed:”hastextrelocations”
解决方案一:将targetSdkVersion修正为<23
解决方案二:https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide经过scanelf/objdump定位存在TEXTREL问题的文件,以及要害代码在文件中的偏移量,然后依据偏移量对应的特征(函数名/hardcode的绝对地址等),定位到代码所在.
在mk脚本中,对LOCAL_CFLAGS,添加-fPIC参数
电源管理在原有的电源管理的基础上加入了两种新的状况:
AppStandby—运用待机状况
Doze体系休眠状况
规范化AppLink(运用程序链接)
指纹识别(统一API)

未经允许不得转载:IT技术网站 » Android5.0和Android6.0适配
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载