最近在做一个项目,需要在自己写的应用中调用打电话给别人的功能,不用多说。直接把代码贴出来。
public class PhoneCall {
public static final String PARAM_CALL_DONE = "CALL_DONE";
public static void call(String phoneNumber, Activity activity) {
CallEndedListener.createListenerFor(activity);
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
activity.startActivity(callIntent);
}
private static class CallEndedListener extends PhoneStateListener {
private boolean called = false;
private final TelephonyManager telephonyManager;
private final Context context;
private Activity activity;
private CallEndedListener(Activity act) {
this.context = act.getBaseContext();
this.activity = act;
this.telephonyManager = (TelephonyManager) context
.getSystemService(Activity.TELEPHONY_SERVICE);
}
public static void createListenerFor(Activity act) {
CallEndedListener listener = new CallEndedListener(act);
listener.telephonyManager.listen(listener, LISTEN_CALL_STATE);
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (called && state == TelephonyManager.CALL_STATE_IDLE) {
called = false;
telephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
try {
Intent t = new Intent(context, activity.getClass());
t.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
t.putExtras(activity.getIntent());
t.putExtra(PARAM_CALL_DONE, true);
t.setAction(Intent.ACTION_MAIN);
activity.finish();
activity = null;
context.startActivity(t);
} catch (Exception e) {
e.printStackTrace();
}
} else {
if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
called = true;
}
}
}
}
}
代码就不详细解释了,大家可以参照ADK API查看。O(∩_∩)O~~~~~~
分享到:
相关推荐
总的来说,要在Android Studio项目中实现打电话和发短信的功能,你需要在`AndroidManifest.xml`中声明权限,根据需要在运行时请求权限,并正确构建和使用`Intent`。这个过程涉及到对Android系统API的理解以及对权限...
1. **权限管理**:在Android系统中,为了实现应用锁,首先需要获取相应的权限。例如,`READ_PHONE_STATE`用于检测设备是否解锁,`SYSTEM_ALERT_WINDOW`(悬浮窗权限)用于在其他应用之上显示锁定提示。 2. **...
在Android应用开发中,调用...综上所述,Android中调用相机和相册涉及到Intent的使用、权限管理、结果处理以及图像的获取和处理等多个知识点。通过合理的代码设计和测试,你可以为用户提供流畅的图片拍摄和选择体验。
在Android平台上实现打电话检测和抽烟检测是一项结合了图像识别与行为分析的技术,它涉及到了多个IT领域的专业知识。本文将深入探讨这些技术要点。 首先,我们要理解图像检测的基础——图像算法。图像算法是计算机...
"Android 源码分析-打电话和发短信" Android 源码分析-打电话和发短信是 Android 开发者中的一项重要内容。本文将对 Android 源码中的打电话和发短信机制进行深入分析,并对相关知识点进行总结。 一、ITelephony ...
通过分析"Android应用源码之android打电话源码.zip"这个压缩包中的源代码,我们可以深入理解这些核心概念。 首先,Android应用的构建通常基于Activity、Service、BroadcastReceiver等组件。在这个源码中,我们可能...
在Android平台上进行应用程序开发时,实现打电话功能是常见的需求之一。这个"Android开发实例:打电话.zip"文件包含了一个具体的示例,教你如何在Android应用中集成拨打电话的功能。以下是关于这个话题的详细知识: ...
在Android平台上开发打电话程序,是Android应用开发中的一个重要部分,主要涉及到系统权限、Intent机制、Phone类以及AndroidManifest.xml配置等多个知识点。以下是对这些关键点的详细解释: 1. **系统权限**:在...
第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...
本资源“安卓Android源码——android打电话源码.rar”提供了一种深入理解如何在Android应用程序中实现打电话功能的方式。通过分析这个源码,我们可以学习到如何在Android系统中集成电话拨打功能,并了解相关API和...
在Android平台上实现拨打电话并同时让屏幕保持黑屏或关屏的功能,对于一些特定的应用场景,比如紧急呼叫或者隐私保护,具有一定的实用价值。本文将详细介绍如何实现这一功能,并提供相应的源码分析。 首先,我们...
本文将详细解析如何在Android应用中实现这一功能,包括使用Surface进行预览。 首先,我们需要理解Android的相机框架。Android提供了一个Camera API,允许开发者访问和控制设备上的摄像头。这个API分为两个版本:...
在Android平台上,开发一个简单的打电话应用涉及到多个关键知识点。首先,我们需要理解Android系统的架构和应用程序框架,因为所有的Android应用都是基于这个框架构建的。在这个框架中,开发者使用Java或Kotlin等...
在Android平台上实现定时打电话的功能,涉及到的是Android系统级别的编程,主要使用到的是AlarmManager服务、Intent和BroadcastReceiver等组件。接下来我们将深入探讨这些关键知识点。 首先,`AlarmManager`是...
为了实现“打电话”和“发短信”的功能,开发者需要使用到Android的权限管理,例如`<uses-permission>`标签在AndroidManifest.xml中声明打电话和发送短信所需的权限。此外,还需要使用到Android提供的Intent机制来...
本文将深入解析Android中调用相机拍照并裁剪照片的源码实现。 首先,我们需要在AndroidManifest.xml中声明相机权限: ```xml <uses-permission android:name="android.permission.CAMERA" /> <uses-feature ...
Android应用源码之android打电话源码.zip项目安卓应用源码下载Android应用源码之android打电话源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
在Android系统中,实现打电话功能涉及到了多个层次的源代码,包括系统级别的API以及应用程序接口。下面我们将深入探讨Android打电话源码的相关知识点。 1. **Intent与ACTION_CALL** 在Android应用开发中,拨打电话...
在Android平台上,实现一个简单的拨号功能涉及到对系统电话API的使用,这主要涉及到`Intent`、`tel:`协议以及权限管理。以下是对这个话题的详细解析: 首先,Android应用程序不能直接操作硬件,而是通过发送意图...
在Android应用开发中,SQLite是一个重要的本地数据存储方式。SQLite是一个轻量级的、关系型的数据库管理系统,它被嵌入到Android系统中,为应用程序提供数据存储功能,无需额外安装服务器。本教程将深入讲解如何在...