广告位联系
返回顶部
分享到

Android挂断电话最新实现方法

Android 来源:互联网 作者:秩名 发布时间:2022-02-18 19:41:34 人浏览
摘要

1.Android 动态申请权限 首先,需要在AndroidManifest.xml静态申请电话权限,否则无法动态申请权限,以下代码位置不能放错(在application之外): 1 uses-permission android:name=android.permission.CALL_P

1.Android 动态申请权限

首先,需要在AndroidManifest.xml静态申请电话权限,否则无法动态申请权限,以下代码位置不能放错(在application之外):

1

<uses-permission android:name="android.permission.CALL_PHONE" />

然后,在java代码中写动态申请权限的逻辑(这是官网的写法)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public void requestPower() {

//判断是否已经赋予权限

    if (ContextCompat.checkSelfPermission(this,

            Manifest.permission.上面电话权限字符)

            != PackageManager.PERMISSION_GRANTED) {

       //如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。

        if (ActivityCompat.shouldShowRequestPermissionRationale(this,

                Manifest.permission.上面电话权限字符)) {//这里可以写个对话框之类的项向用户解释为什么要申请权限,并在对话框的确认键后续再次申请权限.它在用户选择"不再询问"的情况下返回false

        } else {

        //申请权限,字符串数组内是一个或多个要申请的权限,1是申请权限结果的返回参数,在onRequestPermissionsResult可以得知申请结果

            ActivityCompat.requestPermissions(this,

                    new String[]{Manifest.permission.上面电话字符,}, 1);

        }

    }

}

示例图:

2.创建一个AIDL文件ITelephony包名必须是(com.android.internal.telephony)

1

2

3

4

5

6

7

8

9

10

11

12

13

// ITelephony.aidl

  

package com.android.internal.telephony;

  

// Declare any non-default types here with import statements

  

interface ITelephony {

  

boolean endCall();

  

void answerRingingCall();

  

}

示例图:

3.写java代码实现挂断电话

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

private void endCall() {

    try {

        //通过反射得到隐藏的API,并获得隐藏类的Class对象

        Class<?> clazz = Class.forName("android.os.ServiceManager");

        //获取 Method类对象(方法对象)

        Method method = clazz.getMethod("getService", String.class);

        //调用方法获到iBinder对象

        IBinder ibinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);

 

        ITelephony iTelephony = ITelephony.Stub.asInterface(ibinder);

        iTelephony.endCall();//结束电话

         

    } catch (Exception e) {

        e.printStackTrace();

    }

}

记得一定要动态添加电话权限哦!不然挂电话这个操作实现不了。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/liujibo520/article/details/122983914
相关文章
  • Kotlin的Collection与Sequence操作异同点介绍

    Kotlin的Collection与Sequence操作异同点介绍
    在Android开发中,集合是我们必备的容器,Kotlin的标准库中提供了很多处理集合的方法,而且还提供了两种基于容器的工作方式:Collection 和
  • 实现一个Kotlin函数类型方法

    实现一个Kotlin函数类型方法
    接口与函数类型 业务开发中,经常会有实现一个函数式接口(即接口只有一个方法需要实现)的场景,大家应该都会不假思索的写出如下代
  • Android10 App启动Activity源码分析
    ActivityThread的main方法 让我们把目光聚焦到ActivityThread的main方法上。 ActivityThread的源码路径为/frameworks/base/core/java/android/app/ActivityThread。 1 2
  • Android10客户端事务管理ClientLifecycleManager源码解析

    Android10客户端事务管理ClientLifecycleManager源码解析
    在Android 10 App启动分析之Activity启动篇(二)一文中,简单地介绍了Activity的生命周期管理器是如何调度Activity进入onCreate生命周期的流程。这
  • Kotlin对象的懒加载方式by lazy与lateinit异同介绍

    Kotlin对象的懒加载方式by lazy与lateinit异同介绍
    属性或对象的延时加载是我们相当常用的,一般我们都是使用 lateinit 和 by lazy 来实现。 他们两者都是延时初始化,那么在使用时那么他们两
  • Android类加载流程分析

    Android类加载流程分析
    本文分析的代码基于Android8.1.0源码。 流程分析 从loadClass开始,我们来看下Android中类加载的流程 /libcore/ojluni/src/main/java/java/lang/ClassLoader.ja
  • Android实现读写USB串口数据的代码

    Android实现读写USB串口数据的代码
    最近在研究USB方面的内容;先后做了关于Android读写HID、串口设备的DEMO。本文比较简单,主要介绍的是Android实现读取串口数据的功能 废话不
  • Epoxy - 在RecyclerView中构建复杂界面
    Diffing 对于复杂数据结构支持的多个视图类型展示在屏幕上, Epoxy此时是尤其有用的. 在这些场景中, 数据可能会被网络请求, 异步 Observable, 用
  • Android性能优化的详细介绍

    Android性能优化的详细介绍
    性能优化是一个app很重要的一部分,一个性能优良的app从被下载到启动到使用都能给用户到来很好的体验。自然我们做性能优化也是从被下
  • Android进阶宝典-插件化2(Hook启动插件中四大组件

    Android进阶宝典-插件化2(Hook启动插件中四大组件
    在上一节,我们主要介绍了如果通过反射来加载插件中的类,调用类中的方法;既然插件是一个apk,其实最重要的是启动插件中的Activity、
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计