Adndroid 6.0、7.0适配

简介: Adndroid 6.0、7.0适配当你的targetSdkVersion版本没有大于等于23,如果没有可以这样使用以下两种方式可以保证应用不出错:1、compileSdkVersion 25、buildToolsVersion "25.0.3",targetSdkVersion 22,运行的软件的时候用的是 API23以下的权限管理。

Adndroid 6.0、7.0适配

当你的targetSdkVersion版本没有大于等于23,如果没有可以这样使用

以下两种方式可以保证应用不出错:

1、compileSdkVersion 25、buildToolsVersion "25.0.3",targetSdkVersion 22,运行的软件的时候用的是 API23以下的权限管理。如果写成25会报错,因为没有获取到此权限。

2、compileSdkVersion 22、buildToolsVersion "22.0.1"、targetSdkVersion 22

compileSdkVersion

compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。修改 compileSdkVersion 不会改变运行时的行为。当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用

targetSdkVersion

targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。这允许你在适应新的行为变化之前就可以使用新的 API (因为你已经更新了 compileSdkVersion 不是吗?)。

获取是否开启权限

比如获取相机权限

int permissionCheck = ContextCompat.checkSelfPermission(HomeActivity.this,Manifest.permission.CAMERA);

  • PackageManager.PERMISSION_DENIED 没有此权限

  • PackageManager.PERMISSION_GRANTED 有此权限

    如果是 DENIED 就需要进行申请授权

这时候需要调用

  • @param activity The target activity. 目标的activity
  • @param permissions The requested permissions. Must me non-null and not empty. 请求的权限 为数组类型
  • @param requestCode Application specific request code to match with a result 应用程序特定的请求代码来匹配结果(自定义一个int型常量)

String[] permission = new String[]{Manifest.permission.CAMERA};//相机权限 ActivityCompat.requestPermissions(HomeActivity.this,permission,MY_PERMISSIONS_REQUEST_READ_CONTACT);
需要重写 onRequestPermissionsResult 方法 回调权限申请结果

/**
*@requestCode 自定义申请的值

*@permissions 申请权限的数组

*@grantResults返回权限是否成功数组
*/

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)

如果SDK升级到了7.0在开启相机时还需要注意一点

Intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mTempPhotoPath)));

改为

Intent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(mContext,"username",new File(PhotoPath)));

参考 :

http://www.jianshu.com/p/cdcbd3038902

在这里推荐一个非常好的权限适配工程(高人所写)考虑的很全面
https://github.com/dfqin/PermissionGrantor

相关文章
|
1月前
|
编解码
跨屏适配问题有哪些
跨屏适配问题有哪些
10 0
|
3月前
|
开发框架 JavaScript API
uniapp如何实现跨端适配
uniapp如何实现跨端适配
59 0
|
4月前
|
Web App开发 编解码 前端开发
如何做移动端适配?
如何做移动端适配?
40 0
|
8月前
|
JavaScript
深入了解移动端适配的方案
深入了解移动端适配的方案
166 0
|
8月前
|
编解码 前端开发 JavaScript
前端移动端优化和适配
前端移动端优化和适配
134 0
|
9月前
|
编解码 前端开发
移动端适配方案总结(一)
由于自己太久没开发移动端的页面,个人觉得移动端开发相比较PC端开发最大的不同,在于需要去适配各种尺寸的手机屏幕,尤其还有1px的问题。
105 0
|
9月前
|
缓存 编解码 监控
移动端适配方案总结(二)
由于自己太久没开发移动端的页面,个人觉得移动端开发相比较PC端开发最大的不同,在于需要去适配各种尺寸的手机屏幕,尤其还有1px的问题。
171 0
|
9月前
|
iOS开发
IPhone X 以上 ”下巴“ 的适配
IPhone X 以上 ”下巴“ 的适配
217 0
|
10月前
移动端适配方案
移动端适配方案
40 0
|
移动开发 前端开发 JavaScript
超详细讲解 H5 移动端适配方案
超详细讲解 H5 移动端适配方案
超详细讲解 H5 移动端适配方案