今天学习到一个比较好的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、输入一个有效的号码