`
umbrellall1
  • 浏览: 147506 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

第三章:交互式通信服务与手机控制(自定义拨打电话)

阅读更多
效果:








main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>

<EditText
android:id="@+id/edit"
android:layout_width="232px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="30px"
android:layout_y="27px"
>
</EditText>
<Button
android:id="@+id/call"
android:layout_width="157px"
android:layout_height="wrap_content"
android:text="&#25320;&#25171;&#30005;&#35805;"
android:layout_x="54px"
android:layout_y="117px"
>
</Button>
</AbsoluteLayout>




AndroidManifest.xml需要添加权限Android.permission.CALL_PHONE否则点击按钮会报错
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="call.action.text"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".CallActionTest"
                  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>
	<!-- 添加拨出电话的权限 -->
	<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
</manifest> 


package call.action.text;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class CallActionTest extends Activity {
	private EditText ed;
	private Button bt;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**载入main.xml*/
        setContentView(R.layout.main);
        /**通过id找到EditText组件化*/
        ed=(EditText)findViewById(R.id.edit);
        /**通过id找到Button组件化*/
        bt=(Button)findViewById(R.id.call);
        /**设置Button按钮点击事件*/
        bt.setOnClickListener(new Button.OnClickListener(){
        	public void onClick(View v){
        		try {
        			/**获取输入文本框内容*/
					String str = ed.getText().toString();
					/**匹配号码格式是否正确*/
					if (isPhoneNumberValid(str) == true) {
						/**构建一个新的Intent运行action.CALL的常数通过URI将字符串带入*/
						
						/**
						 * 也可以调用虚拟电话拨打电话
						 * Intent myIntentDial = new Intent(
						 * "android.intent.action.DIAL", Uri.parse("tel:"+ ""));
						 * */
						Intent myIntentDial = new Intent(
								"android.intent.action.CALL", Uri.parse("tel:"
										+ str));
						/**带入自定义的Intent对象以运行拨打电话的工作*/
						startActivity(myIntentDial);
						ed.setText("");
					} else {
						ed.setText("");
						/**提示信息*/
						Toast.makeText(CallActionTest.this, "输入的电话格式不正确!",
								Toast.LENGTH_LONG).show();
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
        	}
        });
    }
    
    public boolean isPhoneNumberValid(String str){
    	boolean flg=false;
    	/**
    	 * ^\\(?:可以使用"("作为开头
    	 * (\\d{3}):紧接着三个数字
    	 * \\)?:可以使用")"继续
    	 * [- ]?:接着三个数字
    	 * (\\d{4}$:以四个数字的结束
    	 * 可以比较下列数字格式:
    	 * (123)456-78900,123-4560-7890,12345679800,(123)-4560-7890*/
    	String str1="^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5})$";
    	String str2="^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$";
    	CharSequence input=str;
    	/**创建Pattern带入表达式*/
    	Pattern pattern=Pattern.compile(str1);
    	/**将Pattern以参数的形式传入Matcher*/
    	Matcher matcher=pattern.matcher(input);
    	Pattern pattern2=Pattern.compile(str2);
    	Matcher matcher2=pattern2.matcher(input);
    	if(matcher.matches()||matcher2.matches()){
    		flg=true;
    	}
		return flg;
    }
}




  • 大小: 8 KB
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    UI第三章:视图控制器Demo源代码.zip

    本压缩包"UI第三章:视图控制器Demo源代码.zip"包含了与UI设计和实现相关的实践示例,帮助开发者深入理解如何使用视图控制器来管理屏幕上的内容和交互。我们将探讨以下几个关键知识点: 1. **UIViewController基础*...

    Professional Visual Studio 2012.pdf

    - 第3章:选项和自定义 - 第4章:Visual Studio工作空间 - 第5章:查找和替换以及帮助系统 #### 第二部分:入门指南 (Getting Started) - 第6章:解决方案、项目和项目项 - 第7章:IntelliSense 和书签 - 第8章:...

    Javascript教程

    3. **第三章:函数** - 函数定义与调用 - 函数表达式与匿名函数 - 高阶函数与闭包 4. **第四章:对象与数组** - 对象创建与属性操作 - 数组方法(push、pop、shift、unshift等) - 遍历对象与数组的方法 5. ...

    professional_android_4_application_development

    第10章:深入探讨了如何扩展用户体验,包括自定义视图和交互式图形。 第11章:涵盖了高级用户体验的实现,如动画和更复杂的用户界面设计。 第12章:介绍了硬件传感器的使用,包括加速度计、陀螺仪等,用于开发依赖...

    flex+jsp web 应用开发源代码前十一章

    第3章:数据绑定与事件处理 在这一章中,你将学习Flex中的数据绑定机制,如何通过数据绑定实现视图和模型之间的同步。同时,还会讲解事件处理机制,理解事件监听和事件触发的概念,这对于创建响应用户操作的应用至关...

    uCOS-II内核讲解_完全版_1~12章

    3. **第三章:任务管理** 详细讲解了如何创建、删除、挂起和恢复任务,以及任务间的优先级管理和上下文切换过程。 4. **第四章:内存管理** 讨论了uCOS-II的动态内存分配机制,包括堆内存的划分、分配与释放,...

    Android4应用高级编程(英文版)

    ### 第3章:创建应用程序和活动 - **应用程序架构**:讲解Android应用程序的基本结构,包括组件之间的交互方式。 - **活动生命周期**:深入探讨活动(Activity)的生命周期及其在不同状态下的行为。 ### 第4章:...

    Professional Android Programming with Mono for Android and .NET/C#

    - **第10章:与其他应用和库通信**:介绍了如何让应用之间相互调用服务或共享数据。 - **第11章:开发后台服务与异步代码**:讲解了如何编写高效、响应式的后台服务,以及如何处理异步任务。 - **第12章:Canvas与...

    Professional Android 4 Application Development

    3. **第3章:Creating Applications and Activities** - Android应用程序的基本结构。 - Activity生命周期管理。 - Intent机制详解。 4. **第4章:Building User Interfaces** - XML布局文件的创建和使用。 - ...

    cocos2d游戏开发

    第三章:动作与动画 cocos2d提供了一套强大的动作(Action)系统,可以实现物体的移动、旋转、缩放等效果。本章会介绍如何创建自定义动作,以及如何组合动作形成复杂的动画序列。 第四章:碰撞检测 游戏中的碰撞...

    deckor:交互式解码器

    在 Python 中,尽管有许多内置的字符串处理函数和第三方库可用于处理各种编码格式,但 Deckor 提供了一种统一的、交互式的环境,适合于快速实验和调试。它可能支持多种常见的编码和解码算法,如 Base64、URL 编码、...

    c#WF从入门到精通

    #### 第三章:Workflow实例 - **实例化流程**:详细讲解了如何在应用程序中实例化一个工作流,并探讨了不同实例之间的关系和交互方式。 #### 第四章:活动及Workflow类型介绍 - **活动分类**:本章节对WF中的各种...

    Android手机移动开发案例

    3. **第三章:活动(Activity)管理** Activity是Android应用的基本单元,负责处理用户交互。开发者将学习如何创建和管理Activity生命周期,理解startActivity、finish等方法,以及如何处理Activity之间的跳转和...

    Pro Silverlight 5 in C# (2012)

    ##### 第3章:Layout - **布局容器详解**:Grid、StackPanel、DockPanel等布局容器的使用技巧。 - **响应式设计**:实现适应不同屏幕尺寸的用户界面。 - **自定义布局**:学习如何创建自定义布局逻辑。 ##### 第4章...

    Advanced Flex 3 2008

    - **第3章:加速数据绑定** 讨论了如何结合使用流式处理、缓冲、压缩和多播等概念来增强Flex与外部数据的绑定能力,从而创建高性能的应用程序。此外,还介绍了数据感知控件、数据访问模板和隐式数据绑定等技术。 ...

    Beginning Python Using Python 2.6 and Python 3.1 - James W. Payne.pdf )

    探讨图形用户界面(GUI)的设计与实现,利用如Tkinter或wxPython等库来创建交互式的桌面应用程序。 #### 第14章:访问数据库 教授如何使用Python连接和操作关系型数据库,如MySQL、PostgreSQL等,涵盖了SQL查询、...

    QtCreator快速入门》第3版PPT课件+前16课时(1-9章)

    #### 第3章:Qt UI设计 - 使用Designer创建GUI - 代码与设计的交互 - 自定义控件 #### 第4章:事件处理 - 事件和事件过滤器 - 用户输入事件处理 - 自定义事件 #### 第5章:Qt中的数据类型和容器 - QVariant类型 - ...

    Linux_Qt4.zip_QT 网络通讯_linux QT dialog_linux 网络编程

    学习这一章有助于开发者创建交互式的用户界面。 **第3章:对话框进阶** 这一章可能深入讨论更复杂的对话框,比如自定义对话框的创建,使用QDialog类作为基础,以及如何利用信号和槽机制来处理用户交互。可能还会...

    UE4和web网页的UI交互

    在UE4中,可以利用第三方库如WebSocket++或者直接使用C++实现WebSocket客户端,与Web服务器进行数据交换。这样,UE4场景中的变化可以实时反映到网页上,反之亦然。 五、蓝图实现交互 UE4的蓝图系统是其的一大亮点,...

Global site tag (gtag.js) - Google Analytics