android中实现拨号功能

1、要实现拨号功能,首先需要开启拨号权限

修改AndroidManifest.xml文件,添加如下内容:

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

 

2、添加一个Activity活动,添加一个按钮,点击按钮,实现拨号功能

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="拨号" />
</android.support.constraint.ConstraintLayout>

MainActivity.java

 1 package com.example.chenrui.app1;
 2 
 3 import android.Manifest;
 4 import android.content.Intent;
 5 import android.content.pm.PackageManager;
 6 import android.net.Uri;
 7 import android.support.annotation.NonNull;
 8 import android.support.v4.app.ActivityCompat;
 9 import android.support.v4.content.ContextCompat;
10 import android.support.v7.app.AppCompatActivity;
11 import android.os.Bundle;
12 import android.view.View;
13 import android.widget.Button;
14 import android.widget.Toast;
15 
16 public class MainActivity extends AppCompatActivity {
17 
18     @Override
19     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
20         if(permissions.length!=0 && grantResults[0]!=PackageManager.PERMISSION_GRANTED ) {
21             Toast.makeText(MainActivity.this, "请允许拨号权限后重试", Toast.LENGTH_SHORT).show();
22         } else {
23             call("10086");
24         }
25     }
26 
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         setContentView(R.layout.activity_main);
31 
32         Button button = findViewById(R.id.button1);
33         button.setOnClickListener(new View.OnClickListener() {
34             @Override
35             public void onClick(View v) {
36                 if(ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) {
37                     ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
38                 } else {
39                     call("10086");
40                 }
41             }
42         });
43 
44 
45     }
46 
47     public void call(String number) {
48         Intent intent = new Intent(Intent.ACTION_CALL);
49         intent.setData(Uri.parse("tel:" + number));
50         startActivity(intent);
51     }
52 }

 

上面的代码,实现拨号的功能其实只是第47-51行代码实现了拨号。

从Android6.0开始,除了需要配置权限外,还需要在代码中动态申请权限,第36-37行实现了申请拨号动态权限的功能,第36行是检查是否有拨号权限,第37行是指没有权限时申请权限。

第19-25行代码重写了onRequestPermissionsResult方法,用于在申请权限同意后执行的内容

 

上面代码的逻辑是这样的:

点击拨号按钮,先检查有没有拨号权限,如果有权限就直接拨号

如果没有权限,就申请权限,如果不同意,就提示没有权限,如果同意,那么就开通权限,然后拨号。

转载于:https://www.cnblogs.com/modou/p/10287184.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android Studio 实现拨号面板,可以按照以下步骤操作: 1. 在布局文件添加一个 EditText 组件和一些 Button 组件,分别表示电话号码和数字键。 2. 给每个 Button 组件添加一个 OnClickListener,当用户按钮时,将对应的数字或符号添加到电话号码的文本。 3. 添加一个拨号 Button,当用户击该按钮时,调用系统的拨号功能,将电话号码传递给系统进行拨号。 下面是一个简单的示例代码: ```xml <EditText android:id="@+id/editTextPhoneNumber" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入电话号码" /> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="3" android:rowCount="4"> <Button android:text="1" android:onClick="onNumberClick" /> <Button android:text="2" android:onClick="onNumberClick" /> <Button android:text="3" android:onClick="onNumberClick" /> <Button android:text="4" android:onClick="onNumberClick" /> <Button android:text="5" android:onClick="onNumberClick" /> <Button android:text="6" android:onClick="onNumberClick" /> <Button android:text="7" android:onClick="onNumberClick" /> <Button android:text="8" android:onClick="onNumberClick" /> <Button android:text="9" android:onClick="onNumberClick" /> <Button android:text="*" android:onClick="onNumberClick" /> <Button android:text="0" android:onClick="onNumberClick" /> <Button android:text="#" android:onClick="onNumberClick" /> </GridLayout> <Button android:text="拨号" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onDialClick" /> ``` 然后在 Activity 实现 onNumberClick 和 onDialClick 方法: ```java public void onNumberClick(View view) { EditText editText = findViewById(R.id.editTextPhoneNumber); Button button = (Button) view; String number = editText.getText().toString() + button.getText().toString(); editText.setText(number); } public void onDialClick(View view) { EditText editText = findViewById(R.id.editTextPhoneNumber); String number = editText.getText().toString(); Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + number)); startActivity(intent); } ``` 这样就可以实现一个简单的拨号面板了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值