今天学习到一个比较好的API类——Toast(一种为用户快速提醒信息的一种机制),结合一个拨电话的程序顺便还能温习一下Intent类,一举两得,顺便做个笔录。
这两天才了解的一个Android另外一个优点就是大家可以调用已有的程序,完成更强大的程序功能。比如说这个实验可以完成对Gphone Dialer的调用,虽然做法有些土鳖,主要是用来学习知识也不错。
今天的工作有创建一个输入框用来输入要拨打的电话号码,借助PhoneNumberUtils.isGlobalPhoneNumber方法校验一下输入的号码是否正确,如果正确启动Dialer完成拨打电话的工作,如果输入的电话号码不符合常规的号码格式,使用Toast类的MakeText方法为用户做出一个简单的提示“号码无效,请从新输入”。
不废话,直接三部曲开工。
Step1:界面框架布局设置main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <EditText
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:hint="Please input the phone number you want to dial here"
          android:id="@+id/dial_input"
          >
        </EditText>
  <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/dial_btn"
    android:id="@+id/dial_btn"
    >
  </Button>
</LinearLayout>
和string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
        <string name="dial_btn">Dial!</string>
        <string name="app_name">PhoneDial</string>
</resources>
Step: Java代码
package com.penguin7.phonedial;

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

public class PhoneDial extends Activity {
  private Button btnDial = null;
  private EditText et = null;

/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //文本编辑变量,用于接收视图EditText获取的号码
    et = (EditText) findViewById(R.id.dial_input);
    //启动Dialer程序Button变量
    btnDial = (Button) findViewById(R.id.dial_btn);
    btnDial.setOnClickListener(new View.OnClickListener() {

@Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        String phoneNum = et.getText().toString();
        //isGlobalPhoneNumber方法用来检验输入的串是否是有效的号码
        if (PhoneNumberUtils.isGlobalPhoneNumber(phoneNum)) {
          //有效地电话号码,启动Dialer程序(用宏ACTION_DIAL来标示)
          //Intent传递号码信息需要从字符串转化为URI变量,
          //并以tel://起头
          Intent iDial = new Intent(Intent.ACTION_DIAL, Uri
              .parse("tel://" + phoneNum));
          //启动Dialer程序
          startActivity(iDial);
        } else {
          //无效的号码,提示用户输入错误
          Toast.makeText(PhoneDial.this,
              "not a valid number, please have a check",
              Toast.LENGTH_LONG).show();
        }
      }
    });
  }
}

Step3:看看效果
1、输入无效的号码
      
2、输入一个有效的号码
      

转载于:https://blog.51cto.com/penguin7/232088

Android API 实验记录 (二)相关推荐

  1. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  2. android开发实验报告二,《Android 移动应用开发》实验报告-范本2(33页)-原创力文档...

    实验1<Android活动的使用> 实验学时: 2 每组人数: 1 实验类型: 1 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实 ...

  3. FPGA实验记录二:VHDL组合逻辑-时序逻辑练习

    FPGA小脚丫开发板学习笔记:VHDL组合逻辑-时序逻辑练习 板子:Altera Cyclone10 STEP小脚丫FPGA开发板 IDE:QuartusII 18.1(Educational) 仿真 ...

  4. 实验记录二 示例程序

    在实验室呆了一整天,越来越喜欢这种感觉.把十七个测试程序都跑了一个遍,在电路板卡上折腾过来过去.晕.终于结束了.大致的了解到了自己接触的究竟是什么玩意,感觉不赖.坚持!用程序播梁祝,模拟交通灯等等,真 ...

  5. eNSP动态NAT实验记录

    将内部网络10.1.1.0/24转换为公网地址200.1.1.1-200.1.1.10/28上网(访问Server3),并抓包分析 验证动态NAT是单向转换 搭建实验环境 实现此案例需要按照如下步骤进 ...

  6. CSAPP实验记录(二)Bomb Lab

    CSAPP实验记录(二)Bomb Lab 二进制炸弹是由一系列阶段组成的程序.每个阶段都要求你在 stdin 上键入一个特定的字符串.如果你输入了正确的字符串,那么这个阶段就被拆除,炸弹进入下一个阶段 ...

  7. 操作系统真象还原实验记录之实验十一:实现中断处理(二)

    操作系统真象还原实验记录之实验十一:实现中断处理(二) 书p335 7.6.2 改进中断处理程序,并调快时钟 1.实验代码第一次修改 对应 书p335 7.6.2 改进中断处理程序 这次是上一次实验的 ...

  8. 操作系统真象还原实验记录之实验十二:实现ASSERT

    操作系统真象还原实验记录之实验十二:实现ASSERT,通过makefile完成编译 对应书P367 第8.2节 1.相关基础知识 见书 2.实验代码 完成了开关中断函数.实现assert断言函数用于调 ...

  9. 操作系统真象还原实验记录之实验二十三:硬盘分区,并编写硬盘驱动程序

    操作系统真象还原实验记录之实验二十三:编写硬盘驱动程序 1.硬盘分区 1.1 创建Seven80.img硬盘 ./bximage -mode=create -imgmode=flat -hd=80 - ...

  10. CMU 15-445实验记录(二):Project 1 Buffer Pool Manager

    CMU 15-445实验记录(二):Project 1 在project 1中,已经为我们提供了磁盘管理器以及page layouts ,我们要构建自己的buffer pool管理器以及替换 策略,根 ...

最新文章

  1. Ext JS Designer 1.0.5 发布
  2. 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
  3. 线程池的使用(线程池重点解析)
  4. 将一句话的单词进行倒置,标点符号不倒换。比如一句话:“i love you.”倒换后变为you. love i
  5. 【服务端渲染】NuxtJS基础
  6. Python自定义类调用方法
  7. css 剩余空间,CSS DIV高度撑满剩余空间
  8. python basic programs
  9. Mac制作映像(dmg)文件详细步骤
  10. VS+QT5报错:LNK2019无法解析的外部符号“_declspec(dllimport)public:bool_cdecl QSerialPort“
  11. DIY 2U 服务器
  12. Propensity Score Matching
  13. python中frame是什么意思_python-Tkinter中的Frame类的目的是什么?
  14. JFS 文件系统概述及布局分析
  15. CSS中background与background-image的区别
  16. dir-616 c1语言包,D-Link DIR616无线路由器设置教程
  17. 可视化报告生成器FastReport VCL创建条形码教程指南
  18. 清除windows文件资源管理器FTP自动登录状态
  19. 西门子S7-1200 PLC通过定位轴控制步进电机
  20. python二维表转一维表_曾贤志从零基础开始学用Python处理Excel数据第1,2季

热门文章

  1. 【ArcGIS|空间分析|网络分析】5 计算服务区和创建 OD 成本矩阵
  2. C语言多线程基础-01-线程的创建与销毁
  3. Android Okhttp 配置HTTPS
  4. 在java中什么是所有类的父类_java中object是所有类的父类吗
  5. android自定义View之曲线图
  6. 工作后,成长速度是如何产生差异的?
  7. Android中R文件的丢失问题以及aapt.exe停止工作如何解决
  8. txt.导入c语言,分求C语言问题解决——关于TXT文件导入(第二贴,能给出的这个100和另外的100一起拿走!)...
  9. vant ui 官方文档_转载:微信小程序UI组件库合集
  10. c# zxing条形码设置密度_C# 中 ZXing.Net 怎样突破 条形码 多识别 数量限制