参考:http://www.cnblogs.com/yaozhenfa/

Main.axml

 <?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"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="{0} Calling"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lblNote"
android:textAlignment="center" />
<EditText
android:inputType="phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtPhoneNumber" />
<Button
android:text="Call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnCall" />
</LinearLayout>

Strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Thinks">http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html</string>
<string name="Project">CallPhone</string>
<string name ="Title">Calling</string>
<string name="Messages">Call {0} ?</string>
<string name="Warnning_Title">Information</string>
<string name="Warnning_Value">Couldn`t be Empty!</string>
<string name="Warnning_IllegalValue">Illegal CallPhone Number!</string>
</resources>

MainActivity.cs

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS; namespace PhoneCall
{
[Activity(Label = "PhoneCall", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
private string _note;
private EditText txtPhoneNumber;
private TextView lblNote;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle); // Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main); // Get our button from the layout resource,
// and attach an event to it
///根据ID找手机号输入框按钮
txtPhoneNumber = FindViewById(Resource.Id.txtPhoneNumber) as EditText;
lblNote = FindViewById<TextView>(Resource.Id.lblNote);
txtPhoneNumber.SetTextColor(Android.Graphics.Color.LightGreen);
txtPhoneNumber.AfterTextChanged += txtPhoneNumber_AfterTextChanged;
_note = lblNote.Text;
txtPhoneNumber_AfterTextChanged(txtPhoneNumber, null);
///根据ID找Call按钮
Button btnCall = FindViewById<Button>(Resource.Id.btnCall);
///为btnCall注册点击事件(Lambda)
btnCall.Click += (sender, e) =>
{
///设置MessageBox
AlertDialog _ad = new AlertDialog.Builder(this).Create();
///Check
if (string.IsNullOrWhiteSpace(txtPhoneNumber.Text))
{
_ad.SetTitle(Resource.String.Warnning_Title);
_ad.SetMessage(GetString(Resource.String.Warnning_Value));
_ad.SetButton("Ok", delegate { });
_ad.Show();
return;
}
///Confirm
if (!Phone.Check(txtPhoneNumber.Text))
{
txtPhoneNumber.Text = "";
_ad.SetTitle(Resource.String.Warnning_Title);
_ad.SetMessage(GetString(Resource.String.Warnning_IllegalValue));
_ad.SetButton("Ok", delegate { });
_ad.Show();
return;
}
_ad.SetTitle(Resource.String.Title);
_ad.SetMessage(string.Format(GetString(Resource.String.Messages), txtPhoneNumber.Text));
_ad.SetButton("Ok", new EventHandler<DialogClickEventArgs>(Call));
_ad.SetButton2("Cancel", delegate { });
_ad.Show();
}; }
private void Call(object sender, DialogClickEventArgs e)
{
StartActivity(Phone.Call(txtPhoneNumber.Text));
} void txtPhoneNumber_AfterTextChanged(object sender, Android.Text.AfterTextChangedEventArgs e)
{
lblNote.Text = string.Format(_note, (sender as EditText).Text);
}
}
}

Phone.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget; using System.Text.RegularExpressions; namespace PhoneCall
{
public class Phone
{
public Phone()
{ } /// <summary>
/// 验证
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static bool Check(string number)
{
if (Regex.IsMatch(number, @"1[3|5|7|8|][0-9]{9}"))
return true;
return false;
} /// <summary>
/// 电话呼叫
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static Intent Call(string number)
{
Intent _it = new Intent(Intent.ActionCall);
_it.SetData(Android.Net.Uri.Parse("tel:"+number));
return _it;
}
}
}

问题:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="PhoneCall.PhoneCall" android:versionCode="" android:versionName="1.0" android:installLocation="auto">
<uses-sdk />
<application android:label="PhoneCall" android:icon="@drawable/Icon"></application>
<uses-permission android:name="android.permission.CALL_PHONE" />
</manifest>

效果

Xamarin 编程之打电话的更多相关文章

  1. Xamarin Andro教程搭建Xamarin Androidid开发环境(一)

    Xamarin Andro教程搭建Xamarin Androidid开发环境(一) "工欲善其事,必先利其器".对于程序员来说,编程的环境就是其手中的利器.如果没有一个合适方便的编 ...

  2. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  3. 【Xamarin开发 Android 系列 3】循序渐进的学习顺序

    原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资 ...

  4. Xamarin Android 之起始篇

    序言: 在博客园注册了已经有2年多了,快三年了.从开始学习这一行开始就在博客园注册了这个账号.至今也还没有写过一篇随笔,大多时候都是在园子里头潜水,看大牛写的文章,学习. 写博客不为啥,就是自己对自己 ...

  5. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  6. python网络编程

    Socket是网络编程的一个抽象的概念. 通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 套 ...

  7. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  8. Python之路【第七篇】python基础 之socket网络编程

    本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket  网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...

  9. .Net中的反应式编程(Reactive Programming)

    系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LI ...

随机推荐

  1. POJ 1654 Area(水题)

    题目链接 卡了一下精度和内存. #include <cstdio> #include <cstring> #include <string> #include &l ...

  2. XML CDATA节点

    术语CDATA指字符数据.CDATA定义为文本块,但识别为标记. 预定义实体的同位素;,密度,并且与放大器;需要打字并且通常难以阅读的标记.在这种情况下,CDATA部分都可以使用.通过使用CDATA节 ...

  3. traits的使用

    trait的作用是可以在任何地方使用trait中的方法. trait的定义与定义类相同,定义实例如下: trait tSoneTrait{ //定义一些属性 function someFunction ...

  4. 求第N个素数

    埃拉托斯特尼筛法 如果求第n 个素数,有一个数学公式可以得到第n 个素数的上界:uper=n*ln(n)+n*ln(ln(n)),n>=6.如果一个数是素数那么这个数的倍数是非素数因此例如2是素 ...

  5. HTML 父元素与子元素之间的margin-top问题

    问题: 父元素的盒子包含一个子元素盒子,给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值,而子元素和父元素的边距则没有发生变化. 代码如下: <div ...

  6. 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test

    安装他yum install tcl

  7. spring security 控制用户信息用户加密 缓存用户信息

    1. MD5加密 任何一个正式的企业应用中,都不会在数据库中使用明文来保存密码的,我们在之前的章节中都是为了方便起见没有对数据库中的用户密码进行加密,这在实际应用中是极为幼稚的做法.可以想象一下,只要 ...

  8. UIBezierPath 的使用

    使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线 ...

  9. paramter的添加

    public string GetUserIdByName(string UserName, string pwd)    {        string sql = @"select Na ...

  10. SQL Server如何添加登录名

    1.电脑上如果安装有SQL Server,我们在开始里面打开SQL Server Management Studio,或者以桌面的快捷方式等打开SQL Server. 2.首先以Windows身份验证 ...