Xamarin.Android 入门实例(3)之呼叫电话号码

1.Main.axml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="fill_parent"
 5     android:layout_height="fill_parent"
 6     android:minWidth="25px"
 7     android:minHeight="25px">
 8     <TextView
 9         android:text="请输入电话号码:"
10         android:textAppearance="?android:attr/textAppearanceLarge"
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content"
13         android:id="@+id/Tag" />
14     <EditText
15         android:text="13002929017"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:id="@+id/PhoneNumberText" />
19     <Button
20         android:text="转化"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:id="@+id/TranslateButton" />
24     <Button
25         android:text="呼叫"
26         android:layout_width="match_parent"
27         android:layout_height="wrap_content"
28         android:id="@+id/CallButton" />
29     <Button
30         android:text="@string/callHistory"
31         android:layout_width="match_parent"
32         android:layout_height="wrap_content"
33         android:id="@+id/CallHistoryButton"
34         android:enabled="false" />
35 </LinearLayout>

2.MainActivity.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using Android.App;
  4 using Android.Content;
  5 using Android.Runtime;
  6 using Android.Views;
  7 using Android.Widget;
  8 using Android.OS;
  9
 10 namespace Phoneword_Droid
 11 {
 12     [Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
 13     public class MainActivity : Activity
 14     {
 15         int count = 1;
 16         static readonly List<string> phoneNumbers = new List<string>();
 17
 18         protected override void OnCreate(Bundle bundle)
 19         {
 20             //button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
 21
 22             base.OnCreate(bundle);
 23             SetContentView(Resource.Layout.Main);
 24
 25             EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
 26             Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
 27             Button callButton = FindViewById<Button>(Resource.Id.CallButton);
 28             Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton);
 29
 30             callButton.Enabled = false;
 31
 32             #region//转化拨号
 33             string translatedNumber = string.Empty;
 34             translateButton.Click += (object sender, EventArgs e) =>
 35             {
 36                 translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
 37                 if (String.IsNullOrWhiteSpace(translatedNumber))
 38                 {
 39                     callButton.Text = "Call";
 40                     callButton.Enabled = false;
 41                 }
 42                 else
 43                 {
 44                     callButton.Text = "Call" + translatedNumber;
 45                     callButton.Enabled = true;
 46                 }
 47             };
 48             #endregion
 49
 50             #region//拨打电话
 51             callButton.Click += (s, e) =>
 52             {
 53                 //对话框
 54                 var callDialog = new AlertDialog.Builder(this);
 55
 56                 //对话框内容
 57                 callDialog.SetMessage("Call" + translatedNumber + "?");
 58
 59                 //拨打按钮
 60                 callDialog.SetNeutralButton("Call", delegate
 61                 {
 62                     ////使用意图拨打电话
 63                     //var callIntent = new Intent(Intent.ActionCall);
 64
 65                     ////将需要拨打的电话设置为意图的参数
 66                     //callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
 67
 68                     //StartActivity(callIntent);
 69
 70                     //将电话加入到历史记录列表中
 71                     phoneNumbers.Add(translatedNumber);
 72
 73                     //如果callHistoryButton的定义在这段代码后面将会出错,所以我们这个时候需要将
 74                     //Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代码提前
 75                     callHistoryButton.Enabled = true;
 76
 77                     //使用意图拨打电话
 78                     var callIntent = new Intent(Intent.ActionCall);
 79
 80                     //将需要拨打的电话设置为意图的参数
 81                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
 82
 83                     StartActivity(callIntent);
 84
 85                 });
 86
 87                 //取消按钮
 88                 callDialog.SetNegativeButton("Cancel", delegate { });
 89
 90                 //显示对话框
 91                 callDialog.Show();
 92             };
 93             #endregion
 94
 95             #region//通话记录
 96             callHistoryButton.Click += (e, t) =>
 97             {
 98                 //指定意图需要打开的活动
 99                 var intent = new Intent(this, typeof(CallHistoryActivity));
100                 //设置意图传递的参数
101                 intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
102                 StartActivity(intent);
103             };
104             #endregion
105
106         }
107     }
108 }

3.PhoneTranslator.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using Android.App;
  4 using Android.Content;
  5 using Android.Runtime;
  6 using Android.Views;
  7 using Android.Widget;
  8 using Android.OS;
  9
 10 namespace Phoneword_Droid
 11 {
 12     [Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
 13     public class MainActivity : Activity
 14     {
 15         int count = 1;
 16         static readonly List<string> phoneNumbers = new List<string>();
 17
 18         protected override void OnCreate(Bundle bundle)
 19         {
 20             //button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
 21
 22             base.OnCreate(bundle);
 23             SetContentView(Resource.Layout.Main);
 24
 25             EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
 26             Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
 27             Button callButton = FindViewById<Button>(Resource.Id.CallButton);
 28             Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton);
 29
 30             callButton.Enabled = false;
 31
 32             #region//转化拨号
 33             string translatedNumber = string.Empty;
 34             translateButton.Click += (object sender, EventArgs e) =>
 35             {
 36                 translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
 37                 if (String.IsNullOrWhiteSpace(translatedNumber))
 38                 {
 39                     callButton.Text = "Call";
 40                     callButton.Enabled = false;
 41                 }
 42                 else
 43                 {
 44                     callButton.Text = "Call" + translatedNumber;
 45                     callButton.Enabled = true;
 46                 }
 47             };
 48             #endregion
 49
 50             #region//拨打电话
 51             callButton.Click += (s, e) =>
 52             {
 53                 //对话框
 54                 var callDialog = new AlertDialog.Builder(this);
 55
 56                 //对话框内容
 57                 callDialog.SetMessage("Call" + translatedNumber + "?");
 58
 59                 //拨打按钮
 60                 callDialog.SetNeutralButton("Call", delegate
 61                 {
 62                     ////使用意图拨打电话
 63                     //var callIntent = new Intent(Intent.ActionCall);
 64
 65                     ////将需要拨打的电话设置为意图的参数
 66                     //callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
 67
 68                     //StartActivity(callIntent);
 69
 70                     //将电话加入到历史记录列表中
 71                     phoneNumbers.Add(translatedNumber);
 72
 73                     //如果callHistoryButton的定义在这段代码后面将会出错,所以我们这个时候需要将
 74                     //Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代码提前
 75                     callHistoryButton.Enabled = true;
 76
 77                     //使用意图拨打电话
 78                     var callIntent = new Intent(Intent.ActionCall);
 79
 80                     //将需要拨打的电话设置为意图的参数
 81                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
 82
 83                     StartActivity(callIntent);
 84
 85                 });
 86
 87                 //取消按钮
 88                 callDialog.SetNegativeButton("Cancel", delegate { });
 89
 90                 //显示对话框
 91                 callDialog.Show();
 92             };
 93             #endregion
 94
 95             #region//通话记录
 96             callHistoryButton.Click += (e, t) =>
 97             {
 98                 //指定意图需要打开的活动
 99                 var intent = new Intent(this, typeof(CallHistoryActivity));
100                 //设置意图传递的参数
101                 intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
102                 StartActivity(intent);
103             };
104             #endregion
105
106         }
107     }
108 }

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的第二个参数,其实就是指定列表中每个项的视图,后面我们会通过自定义的方式控制列表的项

        }
    }
}

模拟器

运行效果

时间: 2024-08-30 00:33:10

Xamarin.Android 入门实例(3)之呼叫电话号码的相关文章

Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作

1.Main.axml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent"

Xamarin.Android 入门实例(1)之获取与解析JSON

1.Main.axml 视图界面 2.视图代码 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill

Xamarin.Android 入门实例(2)之实现WCF 寄宿于IIS 的Web服务提供

1.WCF 契约 ICalculator.cs 1 using System.ServiceModel; 2 namespace Contracts 3 { 4 [ServiceContract] 5 public interface ICalculator 6 { 7 /// <summary> 8 /// 加法 9 /// </summary> 10 /// <param name="x"></param> 11 /// <pa

【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

Xamarin.Android 入门之:Xamarin+vs2015 环境搭建 一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客. 二.准备工作 在安装之前需要下载好xamarin所需要的软件并一个个安装他们: 1.visual studio 2015:http://news.mydrivers.com/1/439/439398.htm 2.xamarin 4.0.3.214: http://download.xamarin.c

Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客. 二.准备工作 在安装之前需要下载好xamarin所需要的软件并一个个安装他们: 1.visual studio 2015:http://news.mydrivers.com/1/439/439398.htm 2.xamarin 4.0.3.214: http://download.xamarin.com/XamarinforVisualStudio/Windows/Xamari

Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片

一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bind jar更详细的内容可以查看https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/ ,这边只是做最简单的绑定. 二.Bind JAR 现在我想做一个功能,使在手机中显示gif图片,普

Xamarin.Android 入门之:Listview和adapter

一.引言 不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用Xamarin去实现它,以及如何使用自定义适配器.关于xamarin中listview的基础和适配器可以查看官网https://developer.xamarin.com/guides/android/user_interface/working_with_listviews_and_adapters/ 本章主要介绍如果在listview一项中显示多条数据. 二.准备工作 1.创建一个Android项目取名为MyList

Xamarin.Android 入门之:Xamarin快速入门

一. 准备工作 1.新建一个项目取名为phoneword 2.在项目创建好之后,让我们展开“Resources”文件夹然后找到并打开该文件夹下的“layout”文件夹,双击main.axml在Android设计器中打开它,这是我们的布局文件. 3.让我们选择“你好世界,请单击我”在设计表面上的按钮,并按删除键将其删除.从工具箱(左侧的区域),在搜索字段中输入text,并将一个Text (Large)控件拖动到设计图面中心的区域: 4.选择我们拖进去控件,我们可以在属性窗口中修改输入的文本 5.然

Xamarin.Android 入门之:xamarin使用webserver和html交互

一.引言 如今,Android+html5开发已经成为最流行的开发模式. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js调用And