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方法,用於在申請權限同意后執行的內容

 

上面代碼的邏輯是這樣的:

點擊撥號按鈕,先檢查有沒有撥號權限,如果有權限就直接撥號

如果沒有權限,就申請權限,如果不同意,就提示沒有權限,如果同意,那么就開通權限,然后撥號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM