Android动态申请权限(打电话)

android 高版本有些权限除了在manifest文件中静态添加,还需要动态请求
具体请求方法如下(以拨打电话为例):

方法1:

这种方法是直接呼出电话

  1. 在manifest文件中添加权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
  1. Java代码动态请求【xml代码就只有一个Button,所以就不列出了】
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;public class MoreInfoActivity extends AppCompatActivity {private static final String TAG = "MoreInfoActivity";private Button mBtnPhone;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_more_info);initView();// 拨打电话按钮的监听事件mBtnPhone.setOnClickListener(v -> {request_permission();});}/*** 动态请求权限*/private void request_permission() {/*ContextCompat.checkSelfPermission:检查是否已被赋予特点权限PackageManager.PERMISSION_GRANTED:权限检查结果,如果权限已授予给定包,则由checkPermission()返回*/// 如果CALL_PHONE权限没有被赋予if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {// 请求权限// permissions请求的权限// requestCode:应用程序特定的请求代码以匹配报告给OnRequestPermissionsResultCallback#onRequestPermissionsResult(int, String[], int[])}// 也就是下面回调的OnRequestPermissionResult()方法ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},10010);Log.d(TAG, "request_permission():正在申请权限!");}else {Log.d(TAG, "request_permission():已经拥有权限!");callUp();}}/*** 请求权限结果的回调* @param requestCode   传入的请求代码* @param permissions   请求的权限* @param grantResults  相应权限授予的结果,可以是PERMISSION_GRANTED,或DENIED.从不为空*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case 10010:// 电话权限// 如果权限授予结果为PERMISSION_GRANTED,那么表示权限授予成功!if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {callUp();Log.d(TAG, "onRequestPermissionsResult(): 获取权限,可以拨打电话!");}else {Log.d(TAG, "onRequestPermissionsResult(): 权限已拒绝!");}break;}}private void callUp() {Intent intent = new Intent();// 设置要执行的一般操作// action:操作名称。特定与应用程序的操作应以供应商的包名为前缀intent.setAction(Intent.ACTION_CALL);// 设置意图正在操作的数据// tel:是必须要添加的参数,后面拼接的字符串为电话号intent.setData(Uri.parse("tel:" + "10010"));startActivity(intent);}private void initView() {mBtnPhone = findViewById(R.id.btn_phone);}
}

方法2:

这种方法只是调用拨打电话,输入电话号,并不呼出

  1. 在manifest文件中添加权限
<uses-permission android:name="android.permission.CALL_PHONE" />
  1. java代码
直接在按钮的点击事件中添加即可
private void callUp(String phoneNumber) {Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:" + phoneNumber));intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
}

Android如何动态申请权限(打电话)相关推荐

  1. android动态申请权限第三方库,Android 关于动态申请权限

    第一种方式:引入三方库,利用第三方申请权限 1.引入三方库: api'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar' 2.调用(当然你需要什 ...

  2. Android 6.0及以上版本动态申请权限,11权限

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//安卓11文件权限// 先判断有没有权限if (Environment.isExter ...

  3. android插件做动态权限,Mui本地打包笔记(四)Android自定义插件的配置(以动态申请权限为例)...

    通过自定义插件方式实现Android平台的动态申请权限功能 在上一章中完成了在Mui中调用Android原生的动态权限请求功能(Android动态申请权限的问题).虽然说完成了功能,但是在使用上并不是 ...

  4. Unity2019中的android动态申请权限(Permissions)

    请使用最新文章: Unity2022中的android权限处理(Permissions) 动态权限,权限弹窗 注意事项: 1.因为新规等因素需要提前弹出游戏自己的权限描述界面 2.玩家连续多次拒绝权限 ...

  5. Android权限申请之动态申请权限

    先上图: 对于一些危险权限在AndroidManifest清单文件中申请之后,还需要得到用户的许可并打开,才算是真正的开启了这个权限.所以可以使用动态申请权限,对于某个功能,如果需要开启某个权限,在用 ...

  6. Android 10动态申请读写权限

    1.在AndroidManifest.xml中添加权限 <?xml version="1.0" encoding="utf-8"?> <man ...

  7. android申请权限一次性申请多个,Android适配6.0动态申请权限,多权限同时申请

    哈哈,现在写适配6.0好像有点马后炮的感觉,不过以前确实没有注意到这些问题.前几天在添加高德地图定位功能的时候发现在Android 6.0系统上有很多的权限需要进行动态申请. 下面先来看一下在Andr ...

  8. Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程)

    Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程) 目录

  9. Android系统版本在6.0+以上需要动态申请权限

    在Androidmanifest.xml里申请过还不够,还需要在Mainactivity里动态申请.调试时报错有2种,不能创建父目录和连接超时.好用的框架有com.github.dfqin:grant ...

最新文章

  1. C#将DataTable转换成list的方法
  2. spring bean作用域_Spring面试知识点,这是我见过最全面的 - 知识铺
  3. 网管型工业以太网交换机的几种管理方式
  4. 复盘二进制的习题(2)
  5. c语言getch() 头文件,用getch()需要头文件吗?
  6. 对tf.nn.softmax的理解
  7. c1和c2语言水平,为什么驾校不建议考C2,驾驶证C1和C2的区别
  8. 视差滚动(Parallax Scrolling)效果的原理和实现
  9. java web 对cookie技术、session技术进行小结
  10. qdebug 调试 输出乱码_Python里三个最高逼格的调试神器
  11. 分布式事务一致性方案
  12. 【渝粤题库】广东开放大学mysql数据库及应用 形成性考核 - 副本 (5)
  13. 【Django 2021年最新版教程3】新建一个WebApp项目并运行
  14. 手机屏幕什么计算机,手机屏幕和电脑屏幕的区别
  15. 浏览量(PV)、访客数(UV)、访问次数、跳出率
  16. Spring Boot:项目前端vue环境搭建
  17. po是什么java_java中po层
  18. 巴比特独家丨从0.06%飙涨到30%,BAT在Compound的利率飙涨背后实际危机四伏
  19. 已知两点经纬度 计算距离和方位角(MATLAB实现)
  20. 2019java 开发工程师 最新面试官 问的问题

热门文章

  1. R语言-光学字符识别分析SVM
  2. ThinkPad T450无线网络不可用解决笔记
  3. 计算机程序员的英文简历,计算机程序员英文简历.doc
  4. outlook打首字母无法自动显示常用联系人
  5. JavaWeb开发一
  6. 微信5秒超时 php异步,微信小程序网络超时怎么办?
  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java社团管理系统w6p04
  8. windows10计算机无法启动不了,停电后Win10系统无法启动?这里有3种解决方案
  9. Android判断模拟器还是真机的方法
  10. 学完这9个课程,你将达到高级黑客水平