android 6.0 权限获取
2015-12-24 10:07
477 查看
前言
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); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories