首页 > 代码库 > Xamarin.Android 入门实例(3)之呼叫电话号码
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 <EditText15 android:text="13002929017"16 android:layout_width="match_parent"17 android:layout_height="wrap_content"18 android:id="@+id/PhoneNumberText" />19 <Button20 android:text="转化"21 android:layout_width="match_parent"22 android:layout_height="wrap_content"23 android:id="@+id/TranslateButton" />24 <Button25 android:text="呼叫"26 android:layout_width="match_parent"27 android:layout_height="wrap_content"28 android:id="@+id/CallButton" />29 <Button30 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 #endregion105 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 #endregion105 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的第二个参数,其实就是指定列表中每个项的视图,后面我们会通过自定义的方式控制列表的项 } }}
模拟器
运行效果
Xamarin.Android 入门实例(3)之呼叫电话号码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。