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方法,用于在申请权限同意后执行的内容

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

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

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

  • 相关阅读:
    tile38 复制配置
    The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS
    tile38 一款开源的geo 数据库
    sqler sql 转rest api 的docker 镜像构建(续)使用源码编译
    sqler sql 转rest api javascript 试用
    sqler sql 转rest api redis 接口使用
    sqler sql 转rest api 的docker image
    sqler sql 转rest api 的工具试用
    apache geode 试用
    benthos v1 的一些新功能
  • 原文地址:https://www.cnblogs.com/modou/p/10287184.html
Copyright © 2011-2022 走看看