android 6.0 权限获取
来源:互联网 发布:知乎如何关闭问题 编辑:程序博客网 时间:2024/05/18 18:56
前言
android 6.0 对权限管理,做了重新定义,导致项目的targetSdkVersion 是23 系统就会默认使用新的权限管理,也是6.0 的权限管理。
如果项目的 targetSdkVersion小于23 系统还是使用旧的权限管理。
6.0的权限管理与5.0之前的权限有什么不同呢?就是在6.0系统中的项目需要动态获取权限,让用户做出判断,是同意还是拒绝
工具类如下
import android.app.Activity;import android.content.pm.PackageManager;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.Manifest;import com.qihoo.linker.logcollector.LogCollector;import com.sytm.tmkq.common.Constant;/** * Created by aoc on 2015/12/23. * * 说明 * Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限, * 所以如果你以前的APP设置的targetSdkVersion低于23,在运行时也不会崩溃, * 但这也只是一个临时的救急策略,用户还是可以在设置中取消授予的权限。 */public class PermissionUtils { private Activity activity; private final int READ_PHONE_STATE_CODE = 1; public PermissionUtils(Activity activity) { this.activity = activity; } /** * 请求 Manifest.permission.READ_PHONE_STATE 权限 */ public void requestPermissionPhoneState() { if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_CODE); } } /** * 回调动作 * @param requestCode * @param grantResults */ public void doNext(int requestCode, int[] grantResults) { switch (requestCode) { case READ_PHONE_STATE_CODE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted } else { // Permission Denied activity.finish(); } break; } }}
调用如下
import android.os.Bundle;import android.support.v7.app.ActionBar;import android.support.v7.app.AppCompatActivity;import com.sytm.tmkq.util.PermissionUtils;/** * Created by hutao on 2015/9/1. */public class BaseNoActionBarActivity extends AppCompatActivity { private PermissionUtils permissionUtils; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); permissionUtils = new PermissionUtils(this); } @Override protected void onResume() { super.onResume(); permissionUtils.requestPermissionPhoneState(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionUtils.doNext(requestCode, grantResults); }}
0 0
- android 6.0 权限获取
- Android 6.0获取权限
- Android 6.0权限的获取
- android 6.0 动态权限获取
- Android 6.0获取动态权限
- android 6.0权限动态获取
- Android 6.0权限动态获取
- Android 6.0动态权限的获取
- Android 6.0运行时获取权限详解
- Android新特性 - 6.0动态获取权限
- Android 6.0常用权限获取工具类
- Android 6.0运行时权限获取
- Android 6.0以上系统动态获取权限
- Android 动态获取权限(6.0 , 7.0)
- android 6.0 权限动态获取示例
- Android 6.0 获取拨打电话的权限
- android 6.0 7.0动态获取权限
- 获取Android系统权限
- .net中使用反射实例:操作非公有成员
- hibernate与ibaties区别
- C/C++函数调用约定详解
- Linux(ubuntu14.04)安装及破解WebStorm11
- SEL使用
- android 6.0 权限获取
- 更新证书错误:No matching provisioning profiles found
- Netty2: 事件驱动的NIO框架(实践)
- 超高仿微信图片选择浏览
- mysql无法导入sql语句
- 使用toggle()方法进行显示隐藏
- 高级属性(Advanced Fields)
- PAT-BCD解密(简单编程题)
- Loadrunner实现Android / IOS 手机APP压力测试