Android之如何快速拨打电话

341 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

最近有个需求 就是在安卓app里快速拨打紧急页面

实现这个需求也不难 首先先在AndroidManifest.xml里开启权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.light">

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

然后在调用拨打电话的时候检查一下是否开启权限

其中重要的是这个@TargetApi告诉lint就当此处是在强调的24版本之上运行的。低于此24版本不做报警。若高于此api可以继续检查

然后创建一个字符数组来存储想要检查的权限 这里我们只需要一个Manifest.permission.CALL_PHONE就可以了 如果sdk版本大于23 则检查是否授权 如果返回的值不是PERMISSION_GRANTED代表的0(为啥是0 看源码) 则再次申请权限(ActivityCompat.requestPermissions(MainActivity.this,permissonsData,3);)

这是源码 
/**
 * Permission check result: this is returned by {@link #checkPermission}
 * if the permission has been granted to the given package.
 */
public static final int PERMISSION_GRANTED = 0;
@TargetApi(Build.VERSION_CODES.N)
private void call() {
    String[] permissonsData =new String[]{Manifest.permission.CALL_PHONE};

            if (Build.VERSION.SDK_INT>=23){

                int permissonCheck=ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION);//检查是否已经授权

                if(permissonCheck != PackageManager.PERMISSION_GRANTED){

                    ActivityCompat.requestPermissions(MainActivity.this,permissonsData,3);
                }
            }
        }

获取了权限之后 做好了前期准备工作

就可以开始正式快速拨打电话

@SuppressLint("MissingPermission")
public void phoneBt() {
  
            String phone = "19973690568";
            Log.v("phone",phone);
            Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phone));
            startActivity(intent);

}

这里的代码较简单 首先创建一个电话的字符串变量 为了方便我就直接赋值给电话了 其实你可以用SQLite或者sharedpreferences存储电话号码和修改电话号码 感兴趣的可以看我之前的文章 有详细介绍 在这里就不想说了 重复炒冷饭没意思

然后就直接用Intent用来启动拨打电话服务 有两个参数

1.第一个参数为启动的服务名(ACTION_CALL)

2.第二个参数为uri为把电话号码转换为资源标识符{?}

这样就可以完成了快速拨打电话了