1、电源管理;
返回值就是是否已经有权限了,如果返回值是
PackageManager.PERMISSION_GRANTED,就证明有权限了,如果返回
PackageManager.
PERMISSION_DENIED,那就证明还没有权限呢,
调用这个方法之后,会弹出一个标准的dialog,这个是不能被我们自定义的啊,长啥死样就看各个厂商了。
上面的大多数方法,我们都已经讲过了,根据注释,也理解了每一段都干了什么,
应用待机
Doze
2、app Link
应用间的跳转
3、指纹识别
4、应用程序权限管理
5.0以后 用户可以关闭某些权限
6.0运行时权限--动态添加应用危险权限
三、移除Appache的HTTP Client(Apache HTTP Client Removal)
Android6.0版本移除了对Appache的HTTP client的支持。如果你的app的目标版本是Android2.3(API level 9)或者更高,请使用HttpURLConnection类进行替换。此类采用了透明压缩(transparent compression)和响应缓存(response caching),最小化电量消耗。如果你希望继续使用Appache Http API,请修改你的build.gradle文件,增加如下:
- android {
- useLibrary 'org.apache.http.legacy'
- }
运行时权限:
1。正常权限
2。危险权限(读写sd卡)
检查权限
如果你需要一个危险的权限,就必须每次都检查你是否已经有权限了,所以如果有权限了,我们直接使用就可以了,如果没有那么就申请就好了
- int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
- Manifest.permission.WRITE_CALENDAR);
这是我们就要自己去申请
申请权限
- ActivityCompat.requestPermissions(thisActivity,
- new String[]{Manifest.permission.READ_CONTACTS},
- MY_PERMISSIONS_REQUEST_READ_CONTACTS);
但是呢,我们可以在弹框之前,单独弹一个窗口,来告诉为什么要申请权限,然后再去弹这个系统框,这样用户就会更加了解你为什么需要这个权限了。
所以我们的完整代码如下:
- // Here, thisActivity is the current activity
- if (ContextCompat.checkSelfPermission(thisActivity,
- Manifest.permission.READ_CONTACTS)
- != PackageManager.PERMISSION_GRANTED) {
- if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
- Manifest.permission.READ_CONTACTS)) {
- // Show an expanation to the user *asynchronously* -- don't block
- // this thread waiting for the user's response! After the user
- // sees the explanation, try again to request the permission.
- } else {
- ActivityCompat.requestPermissions(thisActivity,
- new String[]{Manifest.permission.READ_CONTACTS},
- MY_PERMISSIONS_REQUEST_READ_CONTACTS);
- // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
- // app-defined int constant. The callback method gets the
- // result of the request.
- }
- }
上面的大多数方法,我们都已经讲过了,根据注释,也理解了每一段都干了什么,
唯一需要额外说一下的是
- ActivityCompat.shouldShowRequestPermissionRationale()
- 如果我们的应用在之前请求过权限,但是用户拒绝了我们的请求,返回true
- 如果用户在之前关闭了权限,并且在请求对弹框时,选择了 Don't ask again 选项,返回false
- 如果设备方针拒绝这个应用拥有这个权限,返回false
上面是google说的几点,下面我再解释成人话,就是说:
我们第一次调用这里,肯定是返回false的,就会弹出来系统弹框,问你同不同意啊,
如果你同意了,以后就没这里什么事了
如果要是不同意呢,以后就会返回true,
那咱们就得弹个框,告诉用户问什么要权限,最好再有个同意按钮