一、Intent的使用完成Android拨号通讯功能
拨打电话的程序,相比之前设计的美食刊或者是小应用组件不同的地方,是涉及到了Intent完成组件的通讯。使用到了拨号的权限,调用Android本身封装的应用程序来实现该功能。大致步骤如下:
1.配置文件:activity_main.xml——主要负责页面的布局以及设置每个控件的id
2.Java类:同样的需要加载界面中的各个控件,并且对使用到的控件定义以及初始化值。由于是实现拨号功能,所以用到了EditText textResult用来展示拨号内容。而对于拨号内容是会随着用户添加而不断发生变化的,并且可能会使用到*、#等字符,所以在这里选择StringBuffer currentNum来存取用户点触的号码串。
3.事件处理:由于拨号器每个键都会触发事件,而且基本上都是相同的事件处理操作。所以在activity_main.xml中就已经对每个button进行了事件的定义。digital_click():数字按钮点击后事件调用方法;dial(View view)通话键调用的方法;delete(View view)点击删除事件调用方法。该部分内容终最关键的在于拨号时使用了Intent,将数据以uri传入调用系统库的拨号功能。
①得到EdiText,获取电话号码
②创建意图的引用:Intent intrnt = new Intent();
③设置意图对象的动作setAction()
④拨打电话号码setData()
⑤开启意图statActivity(Intent)
⑥修改安全异常:AndroidMainfest.xml中的permissions-->android.permission.CALL_PHONE
public void dial(View view){//通话键调用的方法 EditText text=(EditText)findViewById(R.id.editText1); String number=text.getText().toString(); Intent intent=new Intent();//intent方法调用系统库拨号功能 intent.setAction(intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+number));//将数据以uri传入。 startActivity(intent); }
具体代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="85dp" android:ems="10" android:background="#ffffffff" android:textSize="40sp" android:textStyle="bold" android:textColor="#ff333333" > <requestFocus /> </EditText> <TableLayout android:layout_width="wrap_content" android:layout_height="244dp" android:layout_marginTop="12dp" > <TableRow android:id="@+id/TableRow04" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton01" android:layout_width="100dp" android:layout_height="60dp" android:onClick="digital_click" android:src="@drawable/b1" android:tag="1" android:textSize="30sp" android:background="@drawable/my_button_background" /> <ImageButton android:id="@+id/ImageButton02" android:layout_width="100dp" android:layout_height="60dp" android:src="@drawable/b2" android:onClick="digital_click" android:background="@drawable/my_button_background" android:tag="2"/> <ImageButton android:id="@+id/ImageButton03" android:layout_width="100dp" android:layout_height="60dp" android:src="@drawable/b3" android:onClick="digital_click" android:background="@drawable/my_button_background" android:tag="3" /> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton4" android:layout_width="100dp" android:layout_height="60dp" android:onClick="digital_click" android:src="@drawable/b4" android:background="@drawable/my_button_background" android:tag="4" /> <ImageButton android:id="@+id/ImageButton5" android:layout_width="100dp" android:layout_height="60dp" android:onClick="digital_click" android:src="@drawable/b5" android:background="@drawable/my_button_background" android:tag="5" /> <ImageButton android:id="@+id/ImageButton06" android:layout_width="100dp" android:layout_height="60dp" android:onClick="digital_click" android:src="@drawable/b6" android:background="@drawable/my_button_background" android:tag="6"/> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton7" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b7" android:tag="7"/> <ImageButton android:id="@+id/ImageButton8" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b8" android:tag="8" /> <ImageButton android:id="@+id/ImageButton9" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b9" android:tag="9" /> </TableRow> <TableRow android:id="@+id/TableRow01" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton10" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b10" android:tag="*"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b11" android:tag="0"/> <ImageButton android:id="@+id/ImageButton12" android:layout_width="100dp" android:layout_height="60dp" android:background="@drawable/my_button_background" android:onClick="digital_click" android:src="@drawable/b12" android:tag="#" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageButton android:id="@+id/message" android:layout_width="100dp" android:layout_height="wrap_content" android:background="@drawable/messa" /> <ImageButton android:id="@+id/dialer" android:layout_width="100dp" android:layout_height="wrap_content" android:onClick="dial" android:background="@drawable/call" /> <ImageButton android:id="@+id/delete" android:layout_width="100dp" android:layout_height="wrap_content" android:onClick="delete" android:background="@drawable/dele" /> </LinearLayout> </LinearLayout>
MainActivity.java
package com.example.call; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.ImageButton; import android.widget.Toast; public class MainActivity extends Activity { private EditText textResult; private StringBuffer currentNum = new StringBuffer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textResult=(EditText)findViewById(R.id.editText1); } public void digital_click(View view){//数字按钮点击后事件调用的方法 ImageButton btn=(ImageButton)view; String text=btn.getTag().toString(); currentNum.append(text); display(); } public void dial(View view){//通话键调用的方法 EditText text=(EditText)findViewById(R.id.editText1); String number=text.getText().toString(); Intent intent=new Intent();//intent方法调用系统库拨号功能 intent.setAction(intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+number));//将数据以uri传入。 startActivity(intent); } public void delete(View view){ if(currentNum.length()>=1){ currentNum.delete(currentNum.length()-1,currentNum.length()); } if(currentNum.length()==0){ Toast.makeText(MainActivity.this,"请输入号码", 100).show(); display(); } textResult.setText(currentNum); } public double stringToDouble(){ if(currentNum.length()==0){ return 0; } double result=Double.parseDouble(currentNum.toString()); return result; } private void display() { // TODO Auto-generated method stub textResult.setText(currentNum.toString()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
相关推荐
以上就是开发“android通讯打电话录”项目涉及的主要技术点。理解并掌握这些知识点,对于构建一个功能完备且用户体验良好的Android通讯应用至关重要。通过实践这些技术,开发者可以更好地理解和利用Android系统的...
【网页打电话技术详解】 网页打电话,也称为WebRTC(Web Real-Time Communication)技术,是一种让网页浏览器实现实时通信的能力,无需任何插件或第三方软件。Webcall网页打电话插件是这种技术的一种应用实例,尤其...
"安卓通讯录联系人打电话归属地相关-actor-platform即时通讯平台.rar" 这个标题表明,这是一个针对Android系统,涉及到通讯录、联系人管理以及打电话时显示归属地信息的项目。它使用了名为"actor-platform"的即时...
本系统包括存储、删除、修改、打电话、发信息、发邮件、备份 SD 卡等功能,满足了用户对通讯录的需求。本软件利用 Android 提供的各种组件对界面进行设计,能够很好地支持用户体验。 知识点: 1. Android 手机操作...
2. **AndroidManifest.xml**:这是每个Android应用的核心配置文件,包含了应用的组件(如Activity、Service等)、权限和其他元数据。在即时聊天应用中,可能需要声明网络访问权限,以便进行数据传输。 3. **...
Handset Handset Handset Handset Manufacturers Manufacturers Manufacturers Manufacturers 电话制造商 ASUSTeK Computer Inc. 华硕 Garmin International, Inc. HTC Corporation ( 多普达的母公司 ) 宏达电子 ...
【Android 通讯录小软件开发】是初学者进入Android开发领域的常见实践项目,它涉及到的主要知识点包括Android系统架构、SQLite数据库操作、用户界面设计以及基本的通讯功能实现。以下是这些知识点的详细说明: 1. *...
Connet 是一款专为日常生活中与外界沟通而设计的软件,它提供了两种核心功能:打电话和打开网页。这款应用旨在简化用户与他人的交流方式,同时也方便用户通过网页获取各类信息。 **一、打电话功能** 打电话功能是 ...
11. **短信和电话服务API**:Android 4.4允许第三方应用接管短信和电话服务,提供了更灵活的通讯解决方案。 12. **多媒体支持**:增强了多媒体文件的处理能力,支持更多的音频和视频格式,以及高分辨率的图片。 13...
* 打电话:可以直接从通讯录中拨打电话。 * 发信息:可以直接从通讯录中发送短信。 * 发邮件:可以直接从通讯录中发送电子邮件。 * 备份 SD 卡:可以将通讯录备份到 SD 卡中。 3. Android 手机通讯录的设计流程 ...
在Android系统中,获取手机联系人信息是常见的需求,尤其对于开发涉及通讯功能的应用来说更是必不可少。本示例("Android 读取手机联系人")通过内容提供器(Content Provider)这一核心组件来实现这一功能。内容...
本项目“基于环信的eplice可用的安卓即时通讯项目”已经对官方Demo进行了精简,去除了红包、打电话和视频通话等功能,使得初学者更容易理解和使用。 1. **环信SDK集成**:环信提供了Android SDK,集成到项目中是...
4. 打电话和发信息:用户可以直接从通讯录选择联系人进行拨打电话或发送短信。 5. 发邮件:通过集成电子邮件客户端,用户可直接从通讯录向联系人发送电子邮件。 6. 备份到SD卡:为了防止数据丢失,系统支持将通讯录...
开发者可以利用Android SDK中的Intent机制来实现打电话、发送短信和电子邮件的功能。Intent是一个用于启动其他应用程序组件或传递消息的对象,通过Intent,我们可以在不同的应用程序之间建立联系,实现通讯录中的...
该论文详细阐述了如何使用JAVA程序设计语言和XML语言在Android平台上构建一个具备基本功能的手机应用软件,包括登录、计算器、打电话、发送短信和浏览网页等功能。 首先,系统目标是设计一个用户友好的、功能齐全的...
《构建集成拨打电话和网页浏览功能的Android应用》 在移动设备上,有时我们需要一个应用程序,...通过学习和理解其设计和实现,开发者可以进一步掌握Android开发中的基础组件使用、界面设计和用户交互处理等关键技能。
在Android平台上,`SMSListener`通常是指一个监听短信接收的组件。这个`SMSListener.zip`文件可能包含了关于如何在Android应用中实现短信监听功能的源代码。通过分析和学习这份源码,我们可以深入理解Android系统中...
- **基础功能**:Android不仅支持传统的电话通信和短信服务,还具备强大的网络功能(如浏览器、即时通讯、电子邮件等),以及多媒体播放能力(如音频和视频播放)。 #### 二、开发环境搭建 - **Eclipse IDE**:...