Xamarin.Android之转换,呼叫,查看历史纪录

E文文章。

功能:能将输入的字母转换成相应的数字。并且能呼叫出去。能查看呼叫的历史纪录。

界面代码如下:

 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
 7   <EditText
 8           android:layout_width="fill_parent"
 9      android:layout_height="wrap_content"
10        android:text="0712-XAMARIN"
11           android:id="@+id/et"
12     />
13
14   <Button
15              android:layout_width="fill_parent"
16      android:layout_height="wrap_content"
17        android:text="转换"
18           android:id="@+id/btnTran"
19     />
20
21   <Button
22            android:layout_width="fill_parent"
23        android:layout_height="wrap_content"
24        android:text="呼叫"
25           android:id="@+id/btnCall"
26     />
27
28   <Button
29             android:layout_width="fill_parent"
30         android:layout_height="wrap_content"
31         android:text="历史纪录"
32            android:id="@+id/btnCallHistory"
33     />
34
36 </LinearLayout>

主Activity代码。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 using Android.App;
 7 using Android.Content;
 8 using Android.OS;
 9 using Android.Runtime;
10 using Android.Views;
11 using Android.Widget;
12
13 namespace App3
14 {
15     [Activity(Label = "CallActivity", MainLauncher = true, Icon = "@drawable/icon2")]
16     public class CallActivity : Activity
17     {
18         //定义手机集合。
19         private static readonly List<string> PhoneNumbers = new List<string>();
20         protected override void OnCreate(Bundle bundle)
21         {
22             base.OnCreate(bundle);
23             SetContentView(Resource.Layout.Call);
24             EditText et = FindViewById<EditText>(Resource.Id.et);
25             Button btnTran = FindViewById<Button>(Resource.Id.btnTran);
26             Button btnCall = FindViewById<Button>(Resource.Id.btnCall);
27             btnCall.Enabled = false;
28             Button btnCallHistory = FindViewById<Button>(Resource.Id.btnCallHistory);
29             btnCallHistory.Enabled = false;
30             string translatedNumber = string.Empty;
31
32
33             btnTran.Click += (sender, e) =>
34             {
35                 translatedNumber = PhoneTranslator.ToNumber(et.Text);
36                 //将转换的手机号加入到手机集合中。
37                 PhoneNumbers.Add(translatedNumber);
38                 btnCallHistory.Enabled = true;
39                 if (String.IsNullOrWhiteSpace(translatedNumber))
40                 {
41                     btnCall.Text = "呼叫";
42                     btnCall.Enabled = false;
43                 }
44                 else
45                 {
46                     btnCall.Text = "呼叫" + translatedNumber;
47                     btnCall.Enabled = true;
48                 }
49             };
50
51
52             btnCall.Click += (sender, e) =>
53             {
54                 //对话框
55                 var callDialog = new AlertDialog.Builder(this);
56                 callDialog.SetMessage("呼叫" + translatedNumber + "?");
57                 //拨打按钮
58                 callDialog.SetNeutralButton("呼叫", delegate
59                 {
60                     //使用意图拨打电话
61                     var callIntent = new Intent(Intent.ActionCall);
62                     //将需要拨打的电话设置为意图的参数.注意写法
63                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
64                     StartActivity(callIntent);
65                 });
66                 callDialog.SetNegativeButton("取消", delegate { });
67                 callDialog.Show();
68             };
69
70
71             btnCallHistory.Click += (sender, e) =>
72             {
73                 //用意图打开历史纪录的活动
74                 Android.Content.Intent it = new Intent(this, typeof(CallHistoryActiviry));
75                 it.PutStringArrayListExtra("phoneNumbers", PhoneNumbers);
76                 StartActivity(it);
77             };
78
79         }
80     }
81 }

通话纪录的Activity代码。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 using Android.App;
 7 using Android.Content;
 8 using Android.OS;
 9 using Android.Runtime;
10 using Android.Views;
11 using Android.Widget;
12
13 namespace App3
14 {
15     [Activity(Label = "CallHistoryActiviry")]
16     public class CallHistoryActiviry : ListActivity
17     {
18         protected override void OnCreate(Bundle bundle)
19         {
20             base.OnCreate(bundle);
21             var phoneNumbers = Intent.Extras.GetStringArrayList("phoneNumbers") ?? new string[0];
22             //只有当此Activity继承于ListActivity时,整个视图才是列表,才可以这么写。
23             this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleExpandableListItem1, phoneNumbers);
24         }
25     }
26 }
时间: 2024-10-03 16:33:50

Xamarin.Android之转换,呼叫,查看历史纪录的相关文章

xamarin.android 绑定百度地图SDK遇到的问题

在 xamarin.android 绑定项目中,绑定 百度地图的LBS地图SDK,参考 https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/ 设置好后,编译,  然后提示错误,其中一个错误 是 意思就是说转换 出来的CS 代码中,有重复的 类型. 理论上来说,转换的 CS 代码 是不应该出现重复代码的,有重复,意味这 jar有重复代码. 然后查看 百度地

Xamarin. Android实现下拉刷新功能

下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. Android中要实现一个好用的下拉刷新功能却不是很容易,在网上找了几个Xamarin.Android的下拉刷新控件,都不是很满意,所以想重新绑定一个java写的下拉刷新控件.在网上找了几个这样的开源库,通过对比发现android-pull-to-refresh实现的功能比较多,实现的效果也比较满意. Android-Pull-To-Refresh项目地址:http

Xamarin.Android开发实践(十四)

Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项). 二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是所以适配器的基类,但是我们不能将其实例化,因为它是一个虚类

Xamarin.Android之ListView和Adapter

一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项). 二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是所以适配器的基类,但是我们不能将其实例化,因为它是一个虚类,一般我们都是继承该类并实现其中的方法,形成形成自定义的列表(大多

Xamarin.Android绑定库分享

使用Xamarin.Android时,会用到各种第三方库,而这些库基本上是java编写的,要在Xamarin.Android中使用这些库,就需要通过Android Binding Project绑定对应的java库,然后在C#中使用.绑定时,可能需要编写相关的转换规则或者修改对应的java源代码,遇到问题时,可以到Xamarin的官网查看,也可以Google. Xamarin.Android绑定参考文档地址: http://developer.xamarin.com/guides/android

跨过几个坑,终于完成了我的第一个Xamarin Android App!

时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方便了我广大.net码农.由于年初脱了WP的坑,换了个安卓低端机,想着什么时候装Xamarin开发个App玩玩. 上个月笔记本100G的C盘莫名其妙快满了,趁着重装系统的机会,安装了VS2015 with sp3,下载开发Android App需要的各种东东.这里要感谢[C#]VS2015开发环境的安

Xamarin.Android中使用ResideMenu实现侧滑菜单

上次使用Xamarin.Android实现了一个比较常用的功能PullToRefresh,详情见:Xamarin. Android实现下拉刷新功能 这次将实现另外一个手机App中比较常用的功能:侧滑菜单.通过搜索,发现有很多侧滑菜单,有仿手机QQ的侧滑菜单,有折叠的侧滑菜单,有SlidingMenu等,不过我还是比较喜欢 ResideMenu实现的效果,所以想通过Xamarin.Android的绑定实现该效果.这次实现该菜单遇到的问题比较多,花的时间也较多,花了三四个晚上才解决所有的问题.下面是

Xamarin.Android开发实践(十三)

Xamarin.Android之SQLite.NET ORM 一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的 学习,我们已经掌握了如何使用特定于该平台的数据库操作.但是这样却和Xamarin所宣称的跨平台相违背了,因为这样我们就需要针对不同的平台编写不同 的代码,而本章将使用Github上的开源项目SQLite.NET去解决这个问题,从而可以实现跨平台,减少代码的重复. 关于该

Xamarin.Android快速入门

一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹->layout文件夹双击打开Main.axml 2.然后将会出现下面的界面 3.接着我们选择这个Button并删除(按下Delete),并从左边的工具箱中拖拽一个 Text(Large) 控件到该界面中,如下所示: 4.同时还要通过属性窗口修改Text的值: 5.紧接着拖拽一个Plain Text控件到之前的