欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中关于call拨号功能的实现方法

程序员文章站 2023-12-01 21:47:04
 前几天考试居然记错dial和call,故在此写上小demo来作区别,加深印象。 主要是实现call(拨通电话)功能,dial(拨电话)功能用作对比,话不多说,...

 前几天考试居然记错dial和call,故在此写上小demo来作区别,加深印象。

主要是实现call(拨通电话)功能,dial(拨电话)功能用作对比,话不多说,贴上代码。

1.创建布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
>
<button
  android:id="@+id/btn_dial"
  android:text="dial"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
<button
  android:id="@+id/call"
  android:text="call"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
</linearlayout>

也就是添加了两个按钮dial和call,废话

2.添加java代码:

package com.cnblogs.dialandcall;

import android.manifest;
import android.content.intent;
import android.content.pm.packagemanager;
import android.net.uri;
import android.support.annotation.nonnull;
import android.support.v4.app.activitycompat;
import android.support.v4.content.contextcompat;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.widget.toast;

public class mainactivity extends appcompatactivity implements view.onclicklistener {

  private button btn_dial;
  private button btn_call;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

    btn_call = (button)findviewbyid(r.id.btn_call);
    btn_call.setonclicklistener(this);

    btn_dial = (button)findviewbyid(r.id.btn_dial);
    btn_dial.setonclicklistener(this);
  }

  @override
  public void onclick(view v) {
    switch (v.getid()){
      case r.id.btn_call:
        oncall();
        break;
      case r.id.btn_dial:
        intent dialintent = new intent(intent.action_dial);
        dialintent.setdata(uri.parse("tel:10086"));
        startactivity(dialintent);
        break;
    }
  }

  private void oncall() {
    int permissioncheck = contextcompat.checkselfpermission(this, manifest.permission.call_phone);
    if(permissioncheck!= packagemanager.permission_granted){
      activitycompat.requestpermissions(this,new string[]{manifest.permission.call_phone}, integer.parseint("001"));
    }
    else{
      startactivity(new intent(intent.action_call).setdata(uri.parse("tel:10086")));
    }
  }

  @override
  public void onrequestpermissionsresult(int requestcode, @nonnull string[] permissions, @nonnull int[] grantresults) {
    switch (requestcode){
      case 001:
        if(grantresults.length>0&&(grantresults[0]==packagemanager.permission_granted)){
          oncall();
        }
        else {
          toast.maketext(getbasecontext(),"you need allow the permission to run this app",toast.length_short).show();
        }
        break;
    }
  }
}

•需要注意的是,我在btn_call按钮点击事件中添加了单独的方法来进行处理,这是因为call_phone在android 6.0及以上版本被认为是危险权限,需要在程序运行时申请。

•关于android中权限的分类请参考以下链接:

 3.添加manifest.xml文件代码:

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

千万不要忘记在androidmanifest.xml中添加上权限申明哦:)

 实现效果截图:

  android中关于call拨号功能的实现方法     

  截图1.点击call按钮弹出提示框 

android中关于call拨号功能的实现方法

  截图2.点击确认按钮直接跳转至通话界面

 android中关于call拨号功能的实现方法

  截图3.点击dial按钮进入拨号界面    

总结

以上所述是小编给大家介绍的android中关于call拨号功能的实现方法,希望对大家有所帮助