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方法,用於在申請權限同意后執行的內容
上面代碼的邏輯是這樣的:
點擊撥號按鈕,先檢查有沒有撥號權限,如果有權限就直接撥號
如果沒有權限,就申請權限,如果不同意,就提示沒有權限,如果同意,那么就開通權限,然后撥號。