1.首先添加 Android Layout 文件
File : res/layout/main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button android:id="@+id/call_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/call_button"/>
</LinearLayout>
2. Activity
其核心代码
Intent mIntent = new Intent(Intent.ACTION_CALL);
mIntent.setData(Uri.parse("tel:02133330000"));
startActivity(mIntent);
完整代码MainActivity.java
package com.lance.app;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button mCallButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//call button Listener
addCallButtonListener();
}
/**
* call button Listener
*/
private void addCallButtonListener() {
mCallButton = (Button)findViewById(R.id.call_button);
mCallButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent mIntent = new Intent(Intent.ACTION_CALL);
mIntent.setData(Uri.parse("tel:02133330000"));
startActivity(mIntent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3.Android Manifest
添加权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lance.app"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<!-- 加入访问权限 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>
<!-- 否则不能监听每个状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lance.app.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
4.增加PhoneStateListener监听
//add call state listener
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(MainActivity.TELEPHONY_SERVICE);
PhoneCallListener phoneCallListener = new PhoneCallListener();
telephonyManager.listen(phoneCallListener,PhoneStateListener.LISTEN_CALL_STATE);
MainActivity内部类
/**
* 监听状态, 重启app
* @author lance
*/
private class PhoneCallListener extends PhoneStateListener {
private final String LOG_TAG = "com.lance.app.PhoneCallListener";
private boolean isPhoneCalling = false;
public void onCallStateChanged(int state, String incomingNumber) {
if(TelephonyManager.CALL_STATE_RINGING == state) {
Log.i(LOG_TAG, "正在呼叫: "+incomingNumber);
}
if(TelephonyManager.CALL_STATE_OFFHOOK == state) {
Log.i(LOG_TAG, "OFFHOOK");
isPhoneCalling = true;
}
if(TelephonyManager.CALL_STATE_IDLE == state) {
Log.i(LOG_TAG, "Idle");
if(isPhoneCalling) {
Log.i(LOG_TAG, "restart app");
Intent intent = getBaseContext()
.getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName())
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
isPhoneCalling = false;
}
}
}
}
分享到:
相关推荐
对于打电话功能,需要添加`Manifest.permission.CALL_PHONE`权限,这样应用才能调用系统的拨号器拨打电话。对于发送短信功能,需要`Manifest.permission.SEND_SMS`权限,使得应用能够创建并发送短信。在`...
标题提到的“U3d直接调用打电话接口,安卓和ios通用”就是这样一个需求,允许玩家在游戏中直接拨打电话。这个功能的实现主要依赖于Unity的内置API,它允许开发者跨平台地与Android和iOS系统的电话功能进行交互,而不...
在Android平台上,开发一个定时打电话的功能涉及到多个技术层面,包括Android系统的权限管理、AlarmManager服务、Intent服务以及电话API的使用。以下是对这些知识点的详细解释: 1. **权限管理**: 在Android中,...
在Android平台上,打电话功能是通过调用系统的电话服务来实现的。这个过程涉及到多个知识点,包括权限管理、Intent机制、电话API以及用户界面设计。现在,让我们深入探讨这些关键概念。 首先,Android系统对敏感...
以上就是关于Android调用系统通讯录、选择联系人、拨打电话、添加及查询联系人的详细步骤和关键代码。在实际开发中,还需要注意权限管理、UI设计以及错误处理等方面,确保应用的稳定性和用户体验。
总结一下,开发Android打电话程序的关键步骤包括: 1. 创建Android工程。 2. 设计UI布局,如`main.xml`所示,包含输入框和按钮。 3. 在`PhoneActivity.java`中处理点击事件,获取电话号码并创建`Intent`进行拨号。 4...
在onReceive()方法内,我们需要实现打电话的逻辑,这通常通过调用Intent的ACTION_CALL动作完成: ```java Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:" + phone...
综上所述,实现Android定时打电话功能,需要结合`AlarmManager`来设置定时任务,使用`Intent`来传递调用意图,以及通过`BroadcastReceiver`来监听并执行电话拨打操作。整个过程中,需要注意权限的申请和管理,确保...
在Android平台上进行应用程序开发时,实现打电话功能是常见的需求之一。这个"Android开发实例:打电话.zip"文件包含了一个具体的示例,教你如何在Android应用中集成拨打电话的功能。以下是关于这个话题的详细知识: ...
在Android平台上,打电话和发送短信是两个非常基础且重要的功能,尤其对于开发移动应用程序的开发者来说。本篇文章将深入探讨如何在Android应用中实现这些功能。 首先,打电话功能的实现主要依赖于`Intent`对象和`...
在Android平台上,开发一个简单的打电话应用涉及到多个关键知识点。首先,我们需要理解Android系统的架构和应用程序框架,因为所有的Android应用都是基于这个框架构建的。在这个框架中,开发者使用Java或Kotlin等...
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ``` `CALL_PHONE` 权限用于拨打电话,而 `WAKE_LOCK` 权限则用于控制设备的...
在Android系统中,实现...总结来说,Android打电话源码涵盖了从应用层的`Intent`调用到系统服务的处理,再到与硬件的交互等多个层次。理解这一过程不仅有助于开发拨打电话功能,也能加深对Android系统工作原理的认识。
在Android应用开发中,有时需要集成打电话和发送短信的功能,以提供更丰富的用户体验。下面将详细解释如何在Android中实现这两个功能。 ### 调用系统拨号盘打电话 #### 跳转到拨号盘 ```java Intent intent = new ...
在Android平台上开发打电话程序,是Android应用开发中的一个重要部分,主要涉及到系统权限、Intent机制、Phone类以及AndroidManifest.xml配置等多个知识点。以下是对这些关键点的详细解释: 1. **系统权限**:在...
2. **权限管理**:由于涉及到用户的隐私和安全,调用拨打电话功能需要在AndroidManifest.xml中声明`<uses-permission android:name="android.permission.CALL_PHONE" />`权限。自Android 6.0(API级别23)起,还需要...
在Android平台上,开发一个简单的打电话功能是常见的应用场景。这个案例主要涵盖了如何利用Android SDK中的Intent机制,结合系统自带的拨号器实现电话拨打。以下将详细介绍实现这一功能的关键知识点。 首先,我们...
这个压缩包文件"安卓通讯录联系人打电话归属地相关-android打电话源码.rar"包含了相关的源码,可以帮助开发者理解如何实现这样的功能。尽管源码可能并未全部经过验证,但它们可以作为学习和参考的材料。下面我们将...
在Android平台上,调用手机通信录并实现拨打电话的功能是一项常见的任务,对于开发者来说,理解这一过程至关重要。这里我们将深入探讨如何实现这个功能,并按照字母顺序排序联系人。 首先,要访问手机通信录,我们...