Android(安卓)动态获取权限(6.0 , 7.0)
16lz
2021-01-25
在Android API23以上,需要动态获取网络权限。以API版本23 6.0手机获取电话权限为例
/** * 请求打电话的权限码 */ private static final int REQUEST_CALL_PHONE = 100; /** * 点击按钮申请权限 */ findViewById(R.id.callButton).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //点击按钮调用申请权限的方法 requestPermission(); } });private void requestPermission() { //判断Android版本是否大于23 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE); if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL_PHONE); return; } else { //已有权限 } } else { //API 版本在23以下 } }
在activity中有申请权限的回调
/** * 注册权限申请回调 * @param requestCode 申请码 * @param permissions 申请的权限 * @param grantResults 结果 */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_CALL_PHONE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { callPhone(); } else { // Permission Denied Toast.makeText(MainActivity.this, "CALL_PHONE Denied", Toast.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
这样点击按钮时的弹框样式,为手机系统弹框
更多相关文章
- android 错误信息大整理
- Android(安卓)Device Monitor结构和用法
- react-native坑
- Opencv4.3.0+android studio3.6.1运行打开摄像头示例
- DRM在Android中(2)——HAL
- Android各个版本API的差异
- android 6.0 权限问题的解决
- Android(安卓)6.0 RxJava2 + RxPermissions 获取运行时权限
- Android(安卓)项目贪吃蛇最初版本实现。