`

Android组件通讯(打电话)

 
阅读更多

一、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);
	}
}

 

 

 

  • 大小: 839 KB
分享到:
评论
1 楼 梳子不爱头发 2017-08-10  

相关推荐

    android通讯打电话录

    以上就是开发“android通讯打电话录”项目涉及的主要技术点。理解并掌握这些知识点,对于构建一个功能完备且用户体验良好的Android通讯应用至关重要。通过实践这些技术,开发者可以更好地理解和利用Android系统的...

    webcall网页打电话插件

    【网页打电话技术详解】 网页打电话,也称为WebRTC(Web Real-Time Communication)技术,是一种让网页浏览器实现实时通信的能力,无需任何插件或第三方软件。Webcall网页打电话插件是这种技术的一种应用实例,尤其...

    安卓通讯录联系人打电话归属地相关-actor-platform即时通讯平台.rar

    "安卓通讯录联系人打电话归属地相关-actor-platform即时通讯平台.rar" 这个标题表明,这是一个针对Android系统,涉及到通讯录、联系人管理以及打电话时显示归属地信息的项目。它使用了名为"actor-platform"的即时...

    基于android手机通讯录的设计与实现的毕业论文.doc

    本系统包括存储、删除、修改、打电话、发信息、发邮件、备份 SD 卡等功能,满足了用户对通讯录的需求。本软件利用 Android 提供的各种组件对界面进行设计,能够很好地支持用户体验。 知识点: 1. Android 手机操作...

    Android源码之仿微信即时聊天应用.zip

    2. **AndroidManifest.xml**:这是每个Android应用的核心配置文件,包含了应用的组件(如Activity、Service等)、权限和其他元数据。在即时聊天应用中,可能需要声明网络访问权限,以便进行数据传输。 3. **...

    新版Android开发教程.rar

    Handset Handset Handset Handset Manufacturers Manufacturers Manufacturers Manufacturers 电话制造商 ASUSTeK Computer Inc. 华硕 Garmin International, Inc. HTC Corporation ( 多普达的母公司 ) 宏达电子 ...

    Android通讯录小软件可以导入手机上的联系人、发短信、打电话、增加、修改联系人等.pdf

    【Android 通讯录小软件开发】是初学者进入Android开发领域的常见实践项目,它涉及到的主要知识点包括Android系统架构、SQLite数据库操作、用户界面设计以及基本的通讯功能实现。以下是这些知识点的详细说明: 1. *...

    打开网页和打电话功能的app_20152100027詹萍1

    Connet 是一款专为日常生活中与外界沟通而设计的软件,它提供了两种核心功能:打电话和打开网页。这款应用旨在简化用户与他人的交流方式,同时也方便用户通过网页获取各类信息。 **一、打电话功能** 打电话功能是 ...

    Android 4.4 sdk API19

    11. **短信和电话服务API**:Android 4.4允许第三方应用接管短信和电话服务,提供了更灵活的通讯解决方案。 12. **多媒体支持**:增强了多媒体文件的处理能力,支持更多的音频和视频格式,以及高分辨率的图片。 13...

    基于android手机通讯录的设计与实现的毕业论文

    * 打电话:可以直接从通讯录中拨打电话。 * 发信息:可以直接从通讯录中发送短信。 * 发邮件:可以直接从通讯录中发送电子邮件。 * 备份 SD 卡:可以将通讯录备份到 SD 卡中。 3. Android 手机通讯录的设计流程 ...

    Android 读取手机联系人

    在Android系统中,获取手机联系人信息是常见的需求,尤其对于开发涉及通讯功能的应用来说更是必不可少。本示例("Android 读取手机联系人")通过内容提供器(Content Provider)这一核心组件来实现这一功能。内容...

    基于环信的eplice可用的安卓即时通讯项目

    本项目“基于环信的eplice可用的安卓即时通讯项目”已经对官方Demo进行了精简,去除了红包、打电话和视频通话等功能,使得初学者更容易理解和使用。 1. **环信SDK集成**:环信提供了Android SDK,集成到项目中是...

    基于Android手机通讯录的设计与实现_2018.doc

    4. 打电话和发信息:用户可以直接从通讯录选择联系人进行拨打电话或发送短信。 5. 发邮件:通过集成电子邮件客户端,用户可直接从通讯录向联系人发送电子邮件。 6. 备份到SD卡:为了防止数据丢失,系统支持将通讯录...

    基于Android手机通讯录的设计与实现.doc

    开发者可以利用Android SDK中的Intent机制来实现打电话、发送短信和电子邮件的功能。Intent是一个用于启动其他应用程序组件或传递消息的对象,通过Intent,我们可以在不同的应用程序之间建立联系,实现通讯录中的...

    基于android平台的手机应用软件设计与实现本科论文.doc

    该论文详细阐述了如何使用JAVA程序设计语言和XML语言在Android平台上构建一个具备基本功能的手机应用软件,包括登录、计算器、打电话、发送短信和浏览网页等功能。 首先,系统目标是设计一个用户友好的、功能齐全的...

    打开网页和打电话功能的app_20152100061姜淑晶1

    《构建集成拨打电话和网页浏览功能的Android应用》 在移动设备上,有时我们需要一个应用程序,...通过学习和理解其设计和实现,开发者可以进一步掌握Android开发中的基础组件使用、界面设计和用户交互处理等关键技能。

    Android应用源码之SMSLisenter.zip

    在Android平台上,`SMSListener`通常是指一个监听短信接收的组件。这个`SMSListener.zip`文件可能包含了关于如何在Android应用中实现短信监听功能的源代码。通过分析和学习这份源码,我们可以深入理解Android系统中...

    (完整版)基于android超级玛丽制作毕业设计.docx

    - **基础功能**:Android不仅支持传统的电话通信和短信服务,还具备强大的网络功能(如浏览器、即时通讯、电子邮件等),以及多媒体播放能力(如音频和视频播放)。 #### 二、开发环境搭建 - **Eclipse IDE**:...

Global site tag (gtag.js) - Google Analytics