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
原创粉丝点击