Xamarin.Android 入门实例(3)之呼叫电话号码
1.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="请输入电话号码:"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/Tag" />
<EditText
android:text="13002929017"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/PhoneNumberText" />
<Button
android:text="转化"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/TranslateButton" />
<Button
android:text="呼叫"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CallButton" />
<Button
android:text="@string/callHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CallHistoryButton"
android:enabled="false" />
</LinearLayout>
2.MainActivity.cs
using System;
using System.Collections.Generic;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS; namespace Phoneword_Droid
{
[Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = ;
static readonly List<string> phoneNumbers = new List<string>(); protected override void OnCreate(Bundle bundle)
{
//button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); callButton.Enabled = false; #region//转化拨号
string translatedNumber = string.Empty;
translateButton.Click += (object sender, EventArgs e) =>
{
translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
{
callButton.Text = "Call";
callButton.Enabled = false;
}
else
{
callButton.Text = "Call" + translatedNumber;
callButton.Enabled = true;
}
};
#endregion #region//拨打电话
callButton.Click += (s, e) =>
{
//对话框
var callDialog = new AlertDialog.Builder(this); //对话框内容
callDialog.SetMessage("Call" + translatedNumber + "?"); //拨打按钮
callDialog.SetNeutralButton("Call", delegate
{
////使用意图拨打电话
//var callIntent = new Intent(Intent.ActionCall); ////将需要拨打的电话设置为意图的参数
//callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); //StartActivity(callIntent); //将电话加入到历史记录列表中
phoneNumbers.Add(translatedNumber); //如果callHistoryButton的定义在这段代码后面将会出错,所以我们这个时候需要将
//Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代码提前
callHistoryButton.Enabled = true; //使用意图拨打电话
var callIntent = new Intent(Intent.ActionCall); //将需要拨打的电话设置为意图的参数
callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); StartActivity(callIntent); }); //取消按钮
callDialog.SetNegativeButton("Cancel", delegate { }); //显示对话框
callDialog.Show();
};
#endregion #region//通话记录
callHistoryButton.Click += (e, t) =>
{
//指定意图需要打开的活动
var intent = new Intent(this, typeof(CallHistoryActivity));
//设置意图传递的参数
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
};
#endregion }
}
}
3.PhoneTranslator.cs
using System;
using System.Collections.Generic;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS; namespace Phoneword_Droid
{
[Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = ;
static readonly List<string> phoneNumbers = new List<string>(); protected override void OnCreate(Bundle bundle)
{
//button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); callButton.Enabled = false; #region//转化拨号
string translatedNumber = string.Empty;
translateButton.Click += (object sender, EventArgs e) =>
{
translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
{
callButton.Text = "Call";
callButton.Enabled = false;
}
else
{
callButton.Text = "Call" + translatedNumber;
callButton.Enabled = true;
}
};
#endregion #region//拨打电话
callButton.Click += (s, e) =>
{
//对话框
var callDialog = new AlertDialog.Builder(this); //对话框内容
callDialog.SetMessage("Call" + translatedNumber + "?"); //拨打按钮
callDialog.SetNeutralButton("Call", delegate
{
////使用意图拨打电话
//var callIntent = new Intent(Intent.ActionCall); ////将需要拨打的电话设置为意图的参数
//callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); //StartActivity(callIntent); //将电话加入到历史记录列表中
phoneNumbers.Add(translatedNumber); //如果callHistoryButton的定义在这段代码后面将会出错,所以我们这个时候需要将
//Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代码提前
callHistoryButton.Enabled = true; //使用意图拨打电话
var callIntent = new Intent(Intent.ActionCall); //将需要拨打的电话设置为意图的参数
callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); StartActivity(callIntent); }); //取消按钮
callDialog.SetNegativeButton("Cancel", delegate { }); //显示对话框
callDialog.Show();
};
#endregion #region//通话记录
callHistoryButton.Click += (e, t) =>
{
//指定意图需要打开的活动
var intent = new Intent(this, typeof(CallHistoryActivity));
//设置意图传递的参数
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
};
#endregion }
}
}
4.CallHistoryActivity.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; namespace Phoneword_Droid
{
[Activity(Label = "@string/callHistory")]
public class CallHistoryActivity : ListActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
//从意图中获取传递过来的参数
var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0]; //将字符串数组显示到列表控件中(因为继承的是ListActivity所以整个视图就是一个列表)
this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers); //关于ArrayAdapter的第二个参数,其实就是指定列表中每个项的视图,后面我们会通过自定义的方式控制列表的项 }
}
}
模拟器

运行效果

Xamarin.Android 入门实例(3)之呼叫电话号码的更多相关文章
- Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作
1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- Xamarin.Android 入门实例(2)之实现WCF 寄宿于IIS 的Web服务提供
1.WCF 契约 ICalculator.cs using System.ServiceModel; namespace Contracts { [ServiceContract] public in ...
- Xamarin.Android 入门实例(1)之获取与解析JSON
1.Main.axml 视图界面 2.视图代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建
Xamarin.Android 入门之:Xamarin+vs2015 环境搭建 一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...
- Xamarin.Android 入门之:Android API版本设置
一.引言 Xamarin.Android有几个Android API级别设置,确定多个版本的Android应用程序的兼容性.本博客解释了这些设置意味着什么,如何配置它们,以及它们在运行时对您的应用程序 ...
- VS/Xamarin Android入门一
一.安装和配置(以Visual Studio Pro 2015为例) Visual Studio2015直接提供了这个插件的选择项,稍微提示一下,如果要安装的话,最好准备好十个小时的打算,而且是网速不 ...
- Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片
一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bi ...
- Xamarin.Android 入门之:Listview和adapter
一.引言 不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用Xamarin去实现它,以及如何使用自定义适配器.关于xamarin中listview的基础和适配器可以查看官网https: ...
- Xamarin.Android 入门之:Android的生命周期
一.前言 活动是Android应用程序的基本构建块,他们可以在许多不同的状态存在.当你把一个Android程序置于后台,过一段时间再打开发现之前的数据还存在. 二.活动状态 下面的图表说明了一个活动可 ...
随机推荐
- 动态分析maillog日志,把恶意链接直接用防火墙禁止
近期用 postfix + dovecot 搭建了一个邮件server, 被人当做垃圾邮件转发器,经过配置postfix 的黑白名单, postfix 提示成功的 REJECT 了垃圾邮件, 只是还是 ...
- 【剑指offer】q34:丑数
题目要求第n个丑数.所以对于中间结果不须要保存. def Humble(index): curHum = 1 M2 = 2; M3 = 3; M5 = 5 while index > 1: cu ...
- HDU 3488Tour(流的最小费用网络流)
职务地址:hdu3488 这题跟上题基本差点儿相同啊... . 详情请戳这里. 另外我认为有要改变下代码风格了..最终知道了为什么大牛们的代码的变量名都命名的那么长..我决定还是把源点与汇点改成sou ...
- hdu 4529 Double Dealing (置换群)
# include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...
- hdu2036 (计算多边形的面积)
Input 输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1 ...
- Hdu 3410 【单调队列】.cpp
题意: 给出一个数组,问你对于第i个数,从最后一个比它大的数到它之间比它小的数中最大的那个数的下标,以及它右边到第一个比它大的数中比它小的数中最大的那一个数的下标<下标从1开始>. eg: ...
- Cocos2d-x Tiled地图编辑器(一)基本使用
Tiled地图编辑器支持普通视角地图和45度角地图, 它生成的地图数据文件cocos2d-x完美的支持,Tiled地图编辑器是一个以普通使用为目标地图编辑器,它使用简单而且能够轻松地在不同的游戏引擎中 ...
- Struts2 开发环境搭建
一.开发环境 eclipse+tomcat+struts-2.2.3 eclipse下载地址:http://www.eclipse.org/downloads/ tomca ...
- docker 的安装
官方站点上有各种环境下的 安装指南,这里主要介绍下Ubuntu和CentOS系列的安装. Ubuntu 系列安装 Docker 通过系统自带包安装 Ubuntu 14.04 版本号系统中已经自带了 D ...
- The Swift Programming Language 中国版
iSwifting社会的 Swift 兴趣交流群:303868520 iOS 微信公众账号:iOSDevTip Swift 微信公众账号:SwiftDev iSwifting社区 假设你认为这个项目不 ...