/// <summary> /// Checks if an intent can be handled. /// </summary> public static bool IsIntentAvailable(Context context, Intent intent) { var packageManager = context.PackageManager; var list = packageManager.QueryIntentServices(intent, 0) .Union(packageManager.QueryIntentActivities(intent, 0)); if (list.Any()) { return(true); } TelephonyManager mgr = TelephonyManager.FromContext(context); return(mgr.PhoneType != PhoneType.None); }
public static bool IsIntentAvailable(Context ctx, Intent itt) { var pkcMng = ctx.PackageManager; var lst = pkcMng.QueryIntentServices(itt, 0) .Union(pkcMng.QueryIntentActivities(itt, 0)); if (lst.Any()) { return(true); } var mng = TelephonyManager.FromContext(ctx); return(mng.PhoneType != PhoneType.None); }
public override void OnReceive(Context context, Intent intent) { var telephonyManager = TelephonyManager.FromContext(context); if (intent.Action == Intent.ActionNewOutgoingCall) { OnOutgoingCall(context, intent.GetStringExtra(Intent.ExtraPhoneNumber)); } else { switch (telephonyManager.CallState) { case CallState.Ringing: OnIncomingCall(context, intent.GetStringExtra(TelephonyManager.ExtraIncomingNumber)); break; } } }
private void OnOutgoingCall(Context context, string phoneNumber) { var telephonyManager = TelephonyManager.FromContext(context); if (phoneNumber == null) { Log.Error(Tag, "Can't proceed outgoing call, caller phone number is null!"); return; } var myPhoneNumber = new string(telephonyManager.Line1Number.Where(char.IsDigit).ToArray()); if (myPhoneNumber.Length == 0) { Log.Error(Tag, "Can't proceed outgoing call, your phone number is null!"); return; } var phoneNumberUtils = PhoneNumberUtil.GetInstance(); PhoneNumber callerPhoneNumber; try { callerPhoneNumber = phoneNumberUtils.Parse(phoneNumber, context.Resources.Configuration.Locale.Country); } catch (Exception e) { Log.Error(nameof(PhoneCallReceiver), e.Message); return; } var thisPhoneNumber = phoneNumberUtils.Parse(myPhoneNumber, context.Resources.Configuration.Locale.Country); if (callerPhoneNumber.CountryCode == thisPhoneNumber.CountryCode) { Log.Debug(Tag, $"Same for {phoneNumberUtils.Format(callerPhoneNumber, PhoneNumberFormat.INTERNATIONAL)}," + $" {phoneNumberUtils.Format(thisPhoneNumber, PhoneNumberFormat.INTERNATIONAL)}"); return; } if (new File(context.FilesDir, PhoneUtils.ExcludedOutCountryCodesFile).Exists()) { string text; using (var reader = new StreamReader(context.OpenFileInput(PhoneUtils.ExcludedOutCountryCodesFile))) { text = reader.ReadToEnd(); } foreach (var line in text.Split()) { if (int.TryParse(line, out var lineCode) && callerPhoneNumber.CountryCode == lineCode) { Log.Debug(Tag, $"Found {lineCode} in excluded outgoing country codes"); return; } } } var warningMessage = string.Format( context.GetString(Resource.String.category_phone_notification_suspicious_call_to), callerPhoneNumber.GetInternationalNumber()); using (var writer = new StreamWriter(context.OpenFileOutput(PhoneUtils.SuspiciousCallsFile, FileCreationMode.Append))) { writer.WriteLine(warningMessage); } using (var writer = new StreamWriter(context.OpenFileOutput(AlarmReceiver.CurrentSummaryFile, FileCreationMode.Append))) { writer.WriteLine(warningMessage); } var sender = new NotificationSender(context, DataHolder.PhoneCategory); sender.PutNormalizeExtra(PhoneUtils.CountryCodeKey, callerPhoneNumber.CountryCode); sender.PutNormalizeExtra(PhoneUtils.IsOutgoingKey, true); sender.Send(NotificationType.WarningNotification, warningMessage); MainActivity.Adapter?.Refresh(); }
/// <summary> /// 获取当前的网络类型(WIFI,2G,3G,4G) /// </summary> /// <param name="context">上下文</param> /// <returns> /// 网络类型: /// <li>{@link TelephonyManager#PHONE_TYPE_NONE } : 0 手机制式未知</li> /// <li>{@link TelephonyManager#PHONE_TYPE_GSM } : 1 手机制式为GSM,移动和联通</li> /// <li>{@link TelephonyManager#PHONE_TYPE_CDMA } : 2 手机制式为CDMA,电信</li> /// <li>{@link TelephonyManager#PHONE_TYPE_SIP } : 3</li> /// </returns> public static int GetNetWorkType(Context context) { var netType = NetworkNo; var info = GetActiveNetworkInfo(context); if (info == null || !info.IsAvailable) { return(netType); } switch (info.Type) { case ConnectivityType.Wifi: netType = NetworkWifi; break; case ConnectivityType.Mobile: { var tm = TelephonyManager.FromContext(context); switch (tm.NetworkType) { case NetworkType.Gsm: case NetworkType.Gprs: case NetworkType.Cdma: case NetworkType.Edge: case NetworkType.OneXrtt: case NetworkType.Iden: netType = Network2G; break; case NetworkType.TdScdma: case NetworkType.EvdoA: case NetworkType.Umts: case NetworkType.Evdo0: case NetworkType.Hsdpa: case NetworkType.Hsupa: case NetworkType.Hspa: case NetworkType.EvdoB: case NetworkType.Ehrpd: case NetworkType.Hspap: netType = Network3G; break; case NetworkType.Iwlan: case NetworkType.Lte: netType = Network4G; break; default: var subtypeName = info.SubtypeName; if (subtypeName.Equals("TD-SCDMA", StringComparison.InvariantCultureIgnoreCase) || subtypeName.Equals("WCDMA", StringComparison.InvariantCultureIgnoreCase) || subtypeName.Equals("CDMA2000", StringComparison.InvariantCultureIgnoreCase)) { netType = Network3G; } else { netType = NetworkUnknown; } break; } break; } default: netType = NetworkUnknown; break; } return(netType); }
public string GetNetworkOperatorName() { var telephonyManager = TelephonyManager.FromContext(Application.Context); return(telephonyManager.NetworkOperatorName); }
private DeviceCountryIdentifier() { _telephonyManager = TelephonyManager.FromContext(Application.Context); }
/** * 获取当前的网络类型(WIFI,2G,3G,4G) * <p>需添加权限 {@code <uses-permission android:name="android.permission * .ACCESS_NETWORK_STATE"/>}</p> * * @param context 上下文 * @return 网络类型 * <ul> * <li>{@link #NETWORK_WIFI } = 1;</li> * <li>{@link #NETWORK_4G } = 4;</li> * <li>{@link #NETWORK_3G } = 3;</li> * <li>{@link #NETWORK_2G } = 2;</li> * <li>{@link #NETWORK_UNKNOWN} = 5;</li> * <li>{@link #NETWORK_NO } = -1;</li> * </ul> */ public static int getNetWorkType(Context context) { int netType = NETWORK_NO; NetworkInfo info = getActiveNetworkInfo(context); if (info != null && info.IsAvailable) { if (info.Type == ConnectivityType.Wifi) { netType = NETWORK_WIFI; } else if (info.Type == ConnectivityType.Mobile) { TelephonyManager tm = TelephonyManager.FromContext(context); switch (tm.NetworkType) { case NetworkType.Gsm: case NetworkType.Gprs: case NetworkType.Cdma: case NetworkType.Edge: case NetworkType.OneXrtt: case NetworkType.Iden: netType = NETWORK_2G; break; case NetworkType.TdScdma: case NetworkType.EvdoA: case NetworkType.Umts: case NetworkType.Evdo0: case NetworkType.Hsdpa: case NetworkType.Hsupa: case NetworkType.Hspa: case NetworkType.EvdoB: case NetworkType.Ehrpd: case NetworkType.Hspap: netType = NETWORK_3G; break; case NetworkType.Iwlan: case NetworkType.Lte: netType = NETWORK_4G; break; default: String subtypeName = info.SubtypeName; if (subtypeName.Equals("TD-SCDMA", StringComparison.InvariantCultureIgnoreCase) || subtypeName.Equals("WCDMA", StringComparison.InvariantCultureIgnoreCase) || subtypeName.Equals("CDMA2000", StringComparison.InvariantCultureIgnoreCase)) { netType = NETWORK_3G; } else { netType = NETWORK_UNKNOWN; } break; } } else { netType = NETWORK_UNKNOWN; } } return(netType); }