1、编写MainActivity类
package com.example.myapplication;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText et_number;
private final int PREMISSION_CALL_PHONE = 100; //声明拨打电话权限
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.hellow_world);
setContentView((R.layout.dhbhq));
//拨打电话步骤
//1、找到我们关心的控键 edittext button
et_number = findViewById(R.id.editTextTextPersonName);
//2、找到按钮
Button btnCall = findViewById(R.id.callPhoneBtn);
//3、给button按钮设置一个点击事件
btnCall.setOnClickListener(new MyClickListener());
}
//定义一个类去实现按钮需要的接口类型
private class MyClickListener implements View.OnClickListener{
//当按钮被点击当时候调用
@Override
public void onClick(View view) {
//4、获取et_number文本内容
String number = et_number.getText().toString().trim();
if("".equals(number)){
/*
context 上下文
* */
Toast.makeText(MainActivity.this,"number不能为空",Toast.LENGTH_LONG).show();
}
//5、进行拨打电话、意图Intent
intent = new Intent(); //创建一个意图对象 打 猫、狗、电话
//5.1设置动作
intent.setAction(Intent.ACTION_CALL);
//5.2设置要拨打打数据
/*
* url:同意资源定位符
* uri:同意资源标示符
* */
intent.setData(Uri.parse("tel:" + number));
if(checkReadPermission("android.permission.CALL_PHONE", intent)){
//调用拨打电话函数
call();
}
}
}
/**
* 判断是否有某项权限
* @param context 传过来到this对象
* @param string_permission 权限
* @param request_code 请求码
* @return
*/
public boolean checkReadPermission(String string_permission, Intent intent) {
boolean flag = false;
if (ContextCompat.checkSelfPermission(MainActivity.this, string_permission) == PackageManager.PERMISSION_GRANTED) {//已有权限\
flag = true;
} else {//申请权限
ActivityCompat.requestPermissions(MainActivity.this, new String[]{string_permission},PREMISSION_CALL_PHONE);
}
return flag;
}
/**
* 检查权限后的回调
* @param requestCode 请求码
* @param permissions 权限
* @param grantResults 结果
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {//权限被禁用
Toast.makeText(this, "请允许拨号权限后再试", Toast.LENGTH_SHORT).show();
} else {//添加权限成功
switch (requestCode) {
case PREMISSION_CALL_PHONE:
call();
break;
}
}
}
/**
* 拨打电话(直接拨打)
* @param telPhone 电话
*/
public void call(){
startActivity(intent);
}
}
2、在AndroidMainifest中添加权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="26"/>
//添加这俩行
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".baseActivity.BaseActivity" />
</application>
</manifest>