Xamarin 编程之打电话
参考: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 编程之打电话的更多相关文章
- Xamarin Andro教程搭建Xamarin Androidid开发环境(一)
Xamarin Andro教程搭建Xamarin Androidid开发环境(一) "工欲善其事,必先利其器".对于程序员来说,编程的环境就是其手中的利器.如果没有一个合适方便的编 ...
- 20145314郑凯杰 《Java程序设计》第10周学习总结
20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...
- 【Xamarin开发 Android 系列 3】循序渐进的学习顺序
原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资 ...
- Xamarin Android 之起始篇
序言: 在博客园注册了已经有2年多了,快三年了.从开始学习这一行开始就在博客园注册了这个账号.至今也还没有写过一篇随笔,大多时候都是在园子里头潜水,看大牛写的文章,学习. 写博客不为啥,就是自己对自己 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- python网络编程
Socket是网络编程的一个抽象的概念. 通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 套 ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- Python之路【第七篇】python基础 之socket网络编程
本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket 网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...
- .Net中的反应式编程(Reactive Programming)
系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LI ...
随机推荐
- Android -- 滑式抽屉SlidingDrawer(非原创)
SlidingDrawer(滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个handle以显示隐藏的内容.SlidingDrawer可以在垂直或者水平使用.它由两个子视图组成:一个是用户拖拽的handl ...
- 开篇&TexturePacker打出图集给UGUI使用
开篇: 前段时间,网上流出了一套手游源码,本想着把服务器端搭一下,给自己认识小伙伴们调试着把这套源码学习一下.于是就买一个阿里云服务器,可是花了几天时间,就是run不起来了啊.还好网上已经有人搭出来了 ...
- dynamic 是什么
dynamic是c# 4.0新增的类型,可以修饰类,对象,属性,索引器,方法返回值等. class ExampleClass { // A dynamic field. static dynamic ...
- RSA_RSA算法原理(一)
如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简 ...
- 在Windows7下启动MongoDB服务的解决方案
1:首先去官网下载程序,我用的是1.4.3版本,地址: http://downloads.mongodb.org/win32/mongodb-win32-i386-1.4.3.zip 2:创建一个DB ...
- Curl参数一览
* 目录 1. 介绍 2. curl扩展的安装 3. curl_init 4. curl_setopt 5. curl_exec 6. curl_close 7. curl_version * 介绍 ...
- c++用双向链表实现模板栈
可直接编译运行,其中方法status为形象的显示出栈的结构: // visual stack , need define "cout<<" #include < ...
- 关于在VS 上发布网站
在vs 上建立的网站只能用 localhost 进行访问,想要自己本机上的网站发布到IIS上面,这样就可以直接用 IP 地址来访问了,那么照如下的方式做: 1. 首先需要使用vs 发布自己的网站 1. ...
- Sql Server按树形结构排序查询表记录
http://blog.csdn.net/dxnn520/article/details/8089149 ----------------------------------------------- ...
- sql语句的各种模糊查询
一般模糊语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1.%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况 ...