@Jakar, thank you very much! Here's the same code in C# using Xamarin / Mono.Android
Requires the permission set in your AndroidManifest.xml
Simple C#
using System.Collections.Generic;
using Android.Telephony;
// ...
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Requires, android.permission.READ_PHONE_STATE
SubscriptionManager sm = Android.Telephony.SubscriptionManager.From(Android.App.Application.Context);
IList sis = sm.ActiveSubscriptionInfoList;
SubscriptionInfo si = sis[0];
string carrier = si.CarrierName;
string iccId = si.IccId;
string phoneNum = si.Number;
System.Diagnostics.Debug.WriteLine("Carrier: " + carrier);
System.Diagnostics.Debug.WriteLine("SIM Card IccId: " + iccId);
System.Diagnostics.Debug.WriteLine("Phone Number: " + phoneNum);
// Bonus, Get the IMEI Id (aka, DeviceId)
TelephonyManager tm = (TelephonyManager)GetSystemService(Android.Content.Context.TelephonyService);
string deviceId = tm.DeviceId;
System.Diagnostics.Debug.WriteLine("Device Id: " + deviceId);
}
Both SubscriptionManager and SubscriptionInfo are found under the Android.Telephony namespace
Truth be told this example was needed to activate my phone on the fly and not having the SIM card tool handy to pull it out. And, my eyes aren't what they use to be. View it on DroidTelephonySimInfo.cs on gist.github.com