zoukankan      html  css  js  c++  java
  • 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方法,用于在申请权限同意后执行的内容

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

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

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

  • 相关阅读:
    array方法(一)
    浅谈开发中所注意的问题
    缩略图初版
    Finite State Machine
    mMathf -》 Unity3d通用脚本
    Follow Path -》 Unity3d通用脚本
    Google 网站打不开
    MonoBehaviour.StopCoroutine
    Tutorial Unity 4 apk splitting into OBB for google play
    NGUI List<EventDelegate> 小坑
  • 原文地址:https://www.cnblogs.com/modou/p/10287184.html
Copyright © 2011-2022 走看看