android建立电话拨号器代码,Android编写电话拨号器

一、实现步骤

1.需要创建拨号意图

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + 需要拨打的电话号码));

startActivity(intent);

2.权限允许

3. Android6.0 之后需要动态授权

ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.CALL_PHONE},0x11);

二、示例工程

1.搭建Ui(代码如下)

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">

android:id="@+id/editTextTextPersonName"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginTop="4dp"

android:ems="10"

android:inputType="number"

android:maxLength="11"

android:hint="请输入电话号码"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.497"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent" />

android:id="@+id/button"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:text="拨打电话"

android:onClick="OnClickButton"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName" />

2.实现拨号功能(代码如下)

package com.hiscene.androiddemo;

import androidx.annotation.NonNull;

import androidx.appcompat.app.AppCompatActivity;

import androidx.core.app.ActivityCompat;

import android.Manifest;

import android.app.Activity;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.net.Uri;

import android.os.Build;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.Toast;

import static android.content.pm.PackageManager.PERMISSION_GRANTED;

public class MainActivity extends AppCompatActivity {

private EditText editText;

private final Activity activity = this;

//授权请求码

private static final int PERMISSIONS_CODE = 656;

private String number;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText = findViewById(R.id.editTextTextPersonName);

}

//按钮点事件

public void OnClickButton(View view) {

switch (view.getId()) {

case R.id.button:

//获取输入的电话号码

number = editText.getText().toString().trim();

//检查是否有拨号权限,没有就动态申请

RequestPermissions(PERMISSIONS_CODE, new String[]{Manifest.permission.CALL_PHONE});

break;

}

}

//拨打电话

private void CallPhone() {

if (number == null || "".equals(number)) {

Toast.makeText(activity, "拨号失败,号码为空!", Toast.LENGTH_LONG).show();

return;

}

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + number));

startActivity(intent);

}

//请求权限

public void RequestPermissions(int requestCode, String[] permissions) {

//android6.0 及以上机型

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

boolean needPermission = false;

for (String permisson : permissions) {

if (activity.checkSelfPermission(permisson) != PackageManager.PERMISSION_GRANTED) {

needPermission = true;

break;

}

}

if (needPermission) {

//用户没有权限,动态请求权限

activity.requestPermissions(permissions, requestCode);

} else {

CallPhone();

}

}

//android6.0 以下机型

else {

CallPhone();

}

}

//授权回调

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (requestCode == PERMISSIONS_CODE) {

for (int i = 0; i < permissions.length; i++) {

String s = permissions[i];

if (grantResults[i] != PERMISSION_GRANTED) {

//用户拒绝授权

Toast.makeText(activity, "拨号失败,需要拨号权限!", Toast.LENGTH_LONG).show();

} else {

CallPhone();

}

}

}

}

}

三、资料下载

1.源码下载链接:https://pan.baidu.com/s/1Uohmx29kgLqCjjRinucgvA  密码:rj51

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值