文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android实现拨打电话功能

2023-09-13 20:46

关注

Android实现拨打电话功能

先上UI效果图

点击联系博主

在这里插入图片描述

拒绝权限

在这里插入图片描述

同意权限

直接拨号

在这里插入图片描述

跳转到拨号界面

在这里插入图片描述

跳转到拨号界面 同时附带号码

在这里插入图片描述

代码实现

AndroidManifest.xml中添加权限

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

点击联系博主

contactBlogger.setOnClickListener(v -> {            callPhone();//            callUI();//            callPhoneUI();        });

判断是否有拨号权限

// 判断是否有拨号权限    private boolean ifHaveCallPhonePermission() {        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {            // 动态申请权限            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, CALL_PHONE_REQUEST_CODE);            return false;        }        return true;    }

申请权限回调

// 申请权限回调    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        if (requestCode == CALL_PHONE_REQUEST_CODE) {            if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {                Toast.makeText(this, "请添加拨号权限后重试", Toast.LENGTH_SHORT).show();            } else {                callPhone();//                callUI();//                callPhoneUI();            }        }    }

直接拨号

// 直接拨号    private void callPhone() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(phone)));        }    }

跳转到拨号界面

// 跳转到拨号界面    private void callUI() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_CALL_BUTTON));        }    }

跳转到拨号界面 同时附带号码

// 跳转到拨号界面 同时附带号码    private void callPhoneUI() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(phone)));        }    }

完整代码

MainActivity.java

package top.gaojc.callphonedemo;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Bundle;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Button contactBlogger;    private final String phone = "tel:13103679960";    private final int CALL_PHONE_REQUEST_CODE = 10001;//拨号请求码    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        contactBlogger = findViewById(R.id.contact_blogger);        contactBlogger.setOnClickListener(v -> {            callPhone();//            callUI();//            callPhoneUI();        });    }    // 判断是否有拨号权限    private boolean ifHaveCallPhonePermission() {        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {            // 动态申请权限            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, CALL_PHONE_REQUEST_CODE);            return false;        }        return true;    }    // 申请权限回调    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        if (requestCode == CALL_PHONE_REQUEST_CODE) {            if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {                Toast.makeText(this, "请添加拨号权限后重试", Toast.LENGTH_SHORT).show();            } else {                callPhone();//                callUI();//                callPhoneUI();            }        }    }    // 直接拨号    private void callPhone() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(phone)));        }    }    // 跳转到拨号界面    private void callUI() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_CALL_BUTTON));        }    }    // 跳转到拨号界面 同时附带号码    private void callPhoneUI() {        if (ifHaveCallPhonePermission()) {            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(phone)));        }    }}

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">    <Button        android:id="@+id/contact_blogger"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="@string/contact_blogger" />FrameLayout>

demo下载

demo下载

来源地址:https://blog.csdn.net/Mr_Gaojinchao/article/details/131295883

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯