`

Android通信(拨号、发短信、发邮件)

 
阅读更多

        今天学习了安卓通信的内容,我们可以编写程序来调用系统的内置的API很容易就实现一些系统的自带的功能。下面讲一讲自己的实现过程。

       首先是首页main_activity的的设计:



 
       首页的功能主要有数字按键、添加联系人按键、拨号按键、发短信按键、发邮件按键。数字按键主要通过图片按钮添加背景图来实现,每个数字按键绑定一个数字,例如0,利用 android:tag="0"语句来绑定,获取数字0的时候就利用语句text=btnDigital.getTag().toString();来获取数字。

     然后说说布局,通过这次的设计让我对于布局有了进一步的了解,前两天对于布局都是利用直接拖动按钮来编写的,然后一知半解的,现在至少能懂怎么用了,特别是熟悉了表格布局。



 

   如上图,页面的布局主要是利用表格的布局来实现数字的排版,然后表格里面还通过TableRow来分行,其实现代码如下:

<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: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="82dp"
        android:ems="10"
        android:background="#ffffffff"
        android:textSize="40sp"
        android:textStyle="bold"
        android:textColor="#ff333333" >
        <requestFocus />
    </EditText>

    <TableLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"       
        >

        <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="70dp"
                android:onClick="digital_click"
                android:src="@drawable/n1"               
                android:tag="1" />

            <ImageButton
                android:id="@+id/ImageButton02"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:src="@drawable/n2"
                android:onClick="digital_click"              
                android:tag="2"/>

            <ImageButton
                android:id="@+id/ImageButton03"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:src="@drawable/n3"
                android:onClick="digital_click"               
                android:tag="3" />
        </TableRow>

        <TableRow
            android:id="@+id/TableRow03"
            android:layout_width="100dp"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton4"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/n4"              
                android:tag="4" />

            <ImageButton
                android:id="@+id/ImageButton5"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/n5"               
                android:tag="5" />

            <ImageButton
                android:id="@+id/ImageButton06"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/n6"              
                android:tag="6"/>
        </TableRow>

        <TableRow
            android:id="@+id/TableRow02"
            android:layout_width="100dp"
            android:layout_height="wrap_content" >
            <ImageButton
                android:id="@+id/ImageButton07"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/n7"
                android:tag="7"/>
            <ImageButton
                android:id="@+id/ImageButton08"
                android:layout_width="100dp"
                android:layout_height="70dp"                
                android:onClick="digital_click"
                android:src="@drawable/n8"
                android:tag="8" />
            <ImageButton
                android:id="@+id/ImageButton09"
                android:layout_width="100dp"
                android:layout_height="70dp"          
                android:onClick="digital_click"
                android:src="@drawable/n9"
                android:tag="9" />
        </TableRow>
        <TableRow
            android:id="@+id/TableRow01"
            android:layout_width="100dp"
            android:layout_height="wrap_content" >
            <ImageButton
                android:id="@+id/ImageButton10"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/n10"
                android:tag="*"/>
            <ImageButton
                android:id="@+id/ImageButton11"
                android:layout_width="100dp"
                android:layout_height="70dp"            
                android:onClick="digital_click"
                android:src="@drawable/n11"
                android:tag="0"/>

            <ImageButton
                android:id="@+id/ImageButton12"
                android:layout_width="100dp"
                android:layout_height="70dp"           
                android:onClick="digital_click"
                android:src="@drawable/n12"
                android:tag="#" />

        </TableRow>
			
        
    </TableLayout>

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content" >

        <ImageButton
            android:id="@+id/message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.23"
            android:onClick="newPeople"
            android:background="@drawable/people" />

        <ImageButton
            android:id="@+id/dialer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.17"
            android:onClick="dial" 
            android:background="@drawable/callpeople"
             />

        <ImageButton
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="delete"
            android:background="@drawable/delete" />

    </LinearLayout>
    
     <LinearLayout
         android:layout_width="300dp"
         android:layout_height="wrap_content" >

         <ImageButton
             android:id="@+id/msg"
             android:layout_width="50dp"
             android:layout_height="50dp"
             android:src="@drawable/msg" />

         

         <ImageButton
             android:id="@+id/email"
             android:layout_width="50dp"
             android:layout_height="50dp"
             android:layout_marginLeft="200dp"
             android:onClick="sendEmail"
             android:src="@drawable/email" />
         
     </LinearLayout>

</LinearLayout>

 
      主要功能的实现步骤如下:

    1.按键的时候调用函数添加号码:

	//按键之后执行的动作
	public void digital_click(View view){	  
 	   ImageButton btnDigital=(ImageButton) view;
 	   String text=btnDigital.getTag().toString();
        currentNum.append(text);//currentNum是StringBuffer来存号码
        display();//调用函数显示号码      
 }
//显示栏显示号码的函数
	public void display(){
	     textResult.setText(currentNum.toString());
	    }

 

2.按下拨号键的时候调用系统的API进行拨号:

//拨打功能调用函数
	public void dial(View view) {	
		 EditText text=(EditText)findViewById(R.id.editText1);
		 String number=text.getText().toString();
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:"+number));
		startActivity(intent);//方法内部会自动为Intent添加类别:  android.intent.category.DEFAULT
		 }
	

      tip:在调用系统的拨号功能需要添加拨号的权限,我们需要在Androidmanifest里面添加如下语句:

<uses-permission 
     android:name="android.permission.CALL_PHONE"/>

 3.添加联系人:

//新建联系人
	 public void newPeople(View view){  
		 //接口
         Intent it = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"),"contacts" ));  
         it.setType("vnd.android.cursor.dir/person");  
         String number = textResult.getText().toString();  
         it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,number);  
         startActivity(it);  
           
     }  

 4.删除号码数字删除键的函数:

 

//删除键的功能
	public void delete(View view){
    	if(currentNum.length()>=1){
    		currentNum.delete(currentNum.length()-1, currentNum.length());
    	}
    	if(currentNum.length()==0){
    		Toast toast=Toast.makeText(this,"请输入号码",100);
    		toast.show();
    		display();
    	}
    	textResult.setText(currentNum);
    }

 5.短信和邮件的页面跳转实现:

msg=(ImageButton)findViewById(R.id.msg);			 
		msg.setOnClickListener(new OnClickListener(){				
				public void onClick(View v)
				{
			         Intent it = new Intent();  
			         it.setClass(MainActivity.this, msg.class);
				     MainActivity.this.startActivity(it);
                          }
	});		
		email=(ImageButton)findViewById(R.id.email);			 
		email.setOnClickListener(new OnClickListener(){				
				public void onClick(View v)
				{
			         Intent it = new Intent();  
			         it.setClass(MainActivity.this, email.class);
				     MainActivity.this.startActivity(it);
          
                }
	});

 6.设计信页面和邮件;

7.短信的功能的实现:

public class msg  extends Activity {	
	private EditText tel=null;
	private EditText content=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.msg);
		this.tel=(EditText)super.findViewById(R.id.tel);
		this.content=(EditText)super.findViewById(R.id.content);
	}	
	public void send(View view){
		String telMsg=msg.this.tel.getText().toString();
		String contentMsg=msg.this.content.getText().toString();
		Uri uri=Uri.parse("smsto:"+telMsg);//接收人手机
		Intent it=new Intent();
		it.setAction(Intent.ACTION_SENDTO);//指定action,我要发短信
		it.putExtra("sms_body", contentMsg);//设置信息内容
		it.setType("vnd.android-dir/mms-sms") ;//设置MIME类型
		it.setData(uri);//设置数据,要去的地方
		msg.this.startActivity(it);
	}
}

 最后的结果:

 当我们点击发送的时候调用函数,系统会跳到你的发短信页面,内容都会写好在短信里面。


8.发邮件功能实现:

public class email extends Activity {
	private EditText rec=null;
	private EditText subject=null;
	private EditText emailText=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.email);
		this.rec=(EditText)super.findViewById(R.id.receive);
		this.subject=(EditText)super.findViewById(R.id.subject);
		this.emailText=(EditText)super.findViewById(R.id.emailText);
	}
	

public void sendEmail(View view){
	String recMsg=email.this.rec.getText().toString();
	String contentMsg=email.this.emailText.getText().toString();
	String subjectMsg=email.this.subject.getText().toString();
    Intent emailIntent = new Intent(Intent.ACTION_SEND) ;
	emailIntent.setType("plain/text") ;	// 设置类型
	String address[] = new String[] {recMsg} ;
	emailIntent.putExtra(Intent.EXTRA_EMAIL, address) ;//邮件地址
	emailIntent.putExtra(Intent.EXTRA_SUBJECT, subjectMsg) ;
	emailIntent.putExtra(Intent.EXTRA_TEXT, contentMsg) ;
	startActivity(emailIntent);	// 执行跳转
}}

 

输入相关内容的时候,点击发送,用手机的邮件app打开就会有相关内容。

     以上就是今天所做的所有内容,学会了怎么调用系统的API来实现通信功能,只要知道了相关的接口,实现相关功能总的来说还是比较简单的。
 




 
 
 
 


 
 

 

  • 大小: 91.6 KB
  • 大小: 44 KB
  • 大小: 64.8 KB
  • 大小: 35.7 KB
  • 大小: 14.5 KB
分享到:
评论

相关推荐

    USB 3G拨号上网及短信功能的API说明

    USB 3G拨号上网及短信功能的API是为嵌入式系统设计的一套接口,主要用于在Linux和Android平台上实现3G网络连接和短信收发。这个API由广州友善之臂计算机科技有限公司提供,旨在简化企业用户在项目开发中集成3G通信...

    Android开发实验---通讯录.docx

    本实验旨在让学生掌握Android软件开发的基本编程技术,特别是涉及到Android系统SQLite数据库的使用,以及通话和短信功能的集成。实验要求每位学生独立设计并完成一款Android通讯录软件,实现一系列功能,包括但不...

    酷派8150官方拨号盘和通讯录

    在Android操作系统中,拨号盘和通讯录是手机的核心功能,它们直接影响到用户的日常通信体验。下面我们将详细探讨这些关键知识点。 1. **酷派8150**:酷派8150是一款由中国酷派公司推出的智能手机,主要面向中低端...

    Android 常用的Intent的URI及示例

    Android 操作系统中,Intent 是一个非常重要的组件,它允许不同的应用程序之间进行通信和交互。在 Android 中,Intent 是一个消息对象,它可以用来请求其他应用程序执行某些操作。Intent 可以包含 Uri、类型、...

    65 个 Android 开发入门小例子下载

    4. **邮件发送**:`testSendMail`实例演示了如何使用Android的Intent服务发送电子邮件。这包括设置邮件服务器信息、添加收件人、主题和正文,以及附件的处理。 5. **电话拨号**:`testPhoneCall`教你如何启动拨号器...

    android 电话流程

    RIL是Android系统与硬件无线电通信的接口,它实现了与基带处理器的通信协议,处理了所有与网络连接相关的底层任务,包括语音通话、数据连接等。 6. **权限管理(Permission Control)** 对于电话相关的操作,...

    通讯录(安卓源码,可以添加联系人和删除,查找,对联系人可以拨打,发短信)

    在本项目中,标题"通讯录(安卓源码,可以添加联系人和删除,查找,对联系人可以拨打,发短信)"表明我们拥有的是一款针对Android平台的通讯录应用的源代码。这款应用允许用户执行多种操作,包括添加、删除联系人,...

    android手机通讯录的设计与实现论文

    需求分析部分,作者首先分析了功能需求,包括联系人的增删改查、通话和短信功能、邮件发送以及SD卡备份。性能需求方面,强调了响应速度和资源占用率。数据库需求分析关注数据的安全性和持久性,同时考虑了安全需求,...

    Android通讯录

    在Android平台上,通讯录是一个核心应用,用于存储和管理用户的联系信息,同时也支持通信功能,如拨打电话和发送短信。本项目"Android通讯录"是一个完整的Android应用程序,旨在实现这些功能,提供用户友好的界面和...

    自定义短信发送demo

    - **联系人详情**:显示联系人的详细信息,如电话号码、电子邮件地址等,并提供快捷拨号或发送消息的功能。 - **同步与备份**:可能需要集成云服务,实现联系人的同步和备份功能。 - **权限管理**:尊重用户隐私,...

    Android利用Intent启动和关闭Activity

    隐式启动可以让用户使用系统或其他应用提供的服务,如拨号、发送邮件等,增强了组件的复用性。 ### 常见Intent动作常量 一些常用的Intent动作常量包括: - ACTION_CALL:拨打电话 - ACTION_VIEW:查看内容,如浏览...

    Android Anatomy and Physiology

    这是Android系统架构的最顶层,包括了Home(主屏幕)、Dialer(拨号器)、SMS/MMS(短信/彩信)、Browser(浏览器)、Camera(相机)、Alarm Clock(闹钟)、Calculator(计算器)、Contacts(联系人)、Voice ...

    基于android系统的同学录的实现.doc

    3) 打电话与发短信:调用Android系统的Intent机制,启动拨号和发送短信的相关应用。 4) 发送邮件:集成Android的Email API,实现邮件发送功能。 5) 备份:将联系人数据导出到SD卡,用户可以随时恢复。 3. 开发流程...

    Android 通讯录

    在Android操作系统中,通讯录是用户...总的来说,Android的通讯录功能是其生态系统中的关键组成部分,涉及到了数据存储、用户交互、网络通信等多个方面。无论是对于普通用户还是开发者,理解这些知识点都是非常重要的。

    Android对手机设备基本操作的代码例子

    在Android开发中,对手机设备的基本操作是开发者经常会遇到的任务,包括获取设备信息、控制设备功能、导航到系统设置以及利用通信功能等。本示例将深入探讨这些关键点。 首先,获取手机基本信息是了解设备状态的...

    第05章 手机通信服务及手机控制

    6. **手机控制API**:许多操作系统,如Android和iOS,提供了API供开发者控制手机功能,如调用、短信、位置服务、蓝牙等。熟悉这些API,例如Android的TelephonyManager或iOS的Core Telephony框架,可以帮助开发与手机...

    android 通讯录

    本项目是一款小型的Android通讯录应用,它集成了发送短信、拨打电话以及查找联系人等核心功能,旨在提供便捷的个人通信服务。 一、Android 通讯录基础 1. Content Provider:Android系统的数据共享机制,通讯录...

    开始使用 Xamarin.Android 开发 Android 应用

    ### 开始使用 Xamarin.Android 开发 Android 应用 #### Xamarin.Android 概述 Xamarin.Android 是一个基于 .NET 的框架,允许开发者使用 C# 语言和 .NET Framework 构建高性能、原生的 Android 应用。它为开发者...

    基于Android studio的手机通讯录软件

    6. **Intent**: Intent是Android中用于启动其他组件或通信的机制。在通讯录应用中,Intent可以用来启动电话拨号器或短信应用。 7. **SQLite数据库**: SQLite是Android内置的轻量级关系型数据库,用于存储应用数据。...

Global site tag (gtag.js) - Google Analytics