当前位置: 移动技术网 > IT编程>移动开发>Android > 【android】关于call拨号功能实现的记录

【android】关于call拨号功能实现的记录

2019年05月12日  | 移动技术网IT编程  | 我要评论

异形1电影,240x320壁纸,顺德培训

前几天考试居然记错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中添加上权限申明哦:)

 


 

 实现效果截图:

 点击call按钮弹出对话框  允许权限后跳转至拨号页面   

  截图1.点击call按钮弹出提示框     截图2.点击确认按钮直接跳转至通话界面

 

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


后记:

新手一枚,欢迎交流与指正!

thx :)

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网