Telephony manager - Network Type - Xamarin Android - Deprecated

Prasanth Varanasi 1 Reputation point
2021-07-19T13:24:49.513+00:00

With the Xamarin Forms update 5.0.0.2012, am having an issue in identifying the NetworkType from Telephony Manager.
I see that the NetworkType property from Xamarin Android with latest target framework as API 30, this property is deprecated.
Is there any alternative to identify the type of the network, whether it is 2G, 3G, LTE, CDMA etc?

If this is not feasible, to identify the Network Type, what is the other alternative?

Xamarin
Xamarin
A Microsoft open-source app platform for building Android and iOS apps with .NET and C#.
5,297 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. JarvanZhang 23,951 Reputation points
    2021-07-20T02:15:31.103+00:00

    Hello,​

    Welcome to our Microsoft Q&A platform!

    Since Xamarin.Forms 5.0, the Target Framework requires to be Android 10 or greater. And the getNetworkType() method was deprecated in API level 30, try using the getDataNetworkType method instead. The method could also return a constant indicating the radio technology (network type) currently in use on the device for data transmission.

       Context context = MainActivity.Instance;  
         
       var manager = context.GetSystemService(Android.Content.Context.TelephonyService) as TelephonyManager;  
       var type = manager.DataNetworkType;  
    

    Best Regards,

    Jarvan Zhang


    If the response is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


  2. Prasanth Varanasi 1 Reputation point
    2021-07-20T10:16:45.753+00:00

    Hi Zhang,
    Thanks for your reply.
    I had tested this DataNetworkType before the GetNetworkType and am ended up with an exception.

    Here it is. Do you have any working example for this need?

    Moreover, as mentioned in the documentation, added the below line in the AndroidManifest, but it's still the same issue:
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    Exception:
    [vision.MPPPPPPtrun] runtime.cc:655] Pending exception android.runtime.JavaProxyThrowable: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Java.Lang.SecurityException: getDataNetworkTypeForSubscriber
    [vision.MPPPPPPtrun] runtime.cc:655] at Java.Interop.JniEnvironment+InstanceMethods.CallIntMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0006e] in <8ef750301d7a44afa51374713c06665c>:0
    [vision.MPPPPPPtrun] runtime.cc:655] at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualInt32Method (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <8ef750301d7a44afa51374713c06665c>:0
    [vision.MPPPPPPtrun] runtime.cc:655] at Android.Telephony.TelephonyManager.get_DataNetworkType () [0x00000] in /Users/builder/azdo/_work/2/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-30/mcw/Android.Telephony.TelephonyManager.cs:1092
    [vision.MPPPPPPtrun] runtime.cc:655] at CCCCCCC.YYYYYYYYYApps.Library.AppXXXX.Droid.Dependencies.Connectivity.IsConnectedFast (Android.Content.Context context) [0x00019] in C:\EC\git\EA2019\Library\AppXXXX\AppXXXX.Droid\Dependencies\Connectivity.cs:67
    [vision.MPPPPPPtrun] runtime.cc:655] at CCCCCCC.YYYYYYYYYApps.Library.AppXXXX.Droid.Dependencies.Connectivity.IsAboveBandwidth () [0x00010] in C:\EC\git\EA2019\Library\AppXXXX\AppXXXX.Droid\Dependencies\Connectivity.cs:28
    [vision.MPPPPPPtrun] runtime.cc:655] at CCCCCCC.YYYYYYYYYApps.MMMMMMMMEntry.App.get_IsConnected () [0x00000] in C:\EC\git\EA2019\MPPPPPP\MMMMMMMMEntry\App.xaml.cs:305
    [vision.MPPPPPPtrun] runtime.cc:655] at CCCCCCC.YYYYYYYYYApps.MMMMMMMMEntry.ViewModel.LandingPageViewModel.<.ctor>b__19_1 () [0x00001] in C:\EC\git\EA2019\MPPPPPP\MMMMMMMMEntry\ViewModel\LandingPageViewModel.cs:110
    [vision.MPPPPPPtrun] runtime.cc:655] at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
    [vision.MPPPPPPtrun] runtime.cc:655] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:395
    [vision.MPPPPPPtrun] runtime.cc:655] --- End of inner exception stack trace ---
    [vision.MPPPPPPtrun] runtime.cc:655] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00081] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:409
    [vision.MPPPPPPtrun] runtime.cc:655] at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Reflection/MethodBase.cs:53
    [vision.MPPPPPPtrun] runtime.cc:655] at GalaSoft.MvvmLight.Helpers.WeakAction.Execute () [0x0003c] in <78ffd8a7ebb14429abd6d5d1a8a53baf>:0
    [vision.MPPPPPPtrun] runtime.cc:655] at GalaSoft.MvvmLight.Command.RelayCommand.Execute (System.Object parameter) [0x0002b] in <78ffd8a7ebb14429abd6d5d1a8a53baf>:0
    [vision.MPPPPPPtrun] runtime.cc:655] at Xamarin.Forms.ButtonElement.ElementClicked (Xamarin.Forms.VisualElement visualElement, Xamarin.Forms.Internals.IButtonElement ButtonElementManager) [0x00008] in D:\a\1\s\Xamarin.Forms.Core\ButtonElement.cs:60
    [vision.MPPPPPPtrun] runtime.cc:655] at Xamarin.Forms.Button.SendClicked () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Button.cs:173
    [vision.MPPPPPPtrun] runtime.cc:655] at Xamarin.Forms.Platform.Android.ButtonRenderer+ButtonClickListener.OnClick (Android.Views.View v) [0x0000f] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ButtonRenderer.cs:340
    [vision.MPPPPPPtrun] runtime.cc:655] at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00010] in /Users/builder/azdo/_work/2/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-30/mcw/Android.Views.View.cs:2424
    [vision.MPPPPPPtrun] runtime.cc:655] at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.60(intptr,intptr,intptr)
    [vision.MPPPPPPtrun] runtime.cc:655] at void crc643f46942d9dd1fff9.ButtonRenderer_ButtonClickListener.n_onClick(android.view.View) (ButtonRenderer_ButtonClickListener.java:-2)
    [vision.MPPPPPPtrun] runtime.cc:655] at void crc643f46942d9dd1fff9.ButtonRenderer_ButtonClickListener.onClick(android.view.View) (ButtonRenderer_ButtonClickListener.java:30)
    [vision.MPPPPPPtrun] runtime.cc:655] at boolean android.view.View.performClick() (View.java:7576)
    [vision.MPPPPPPtrun] runtime.cc:655] at boolean android.view.View.performClickInternal() (View.java:7553)
    [vision.MPPPPPPtrun] runtime.cc:655] at boolean android.view.View.access$3600(android.view.View) (View.java:842)
    [vision.MPPPPPPtrun] runtime.cc:655] at void android.view.View$PerformClick.run() (View.java:28786)
    [vision.MPPPPPPtrun] runtime.cc:655] at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:938)
    [vision.MPPPPPPtrun] runtime.cc:655] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
    [vision.MPPPPPPtrun] runtime.cc:655] at void android.os.Looper.loop() (Looper.java:233)
    [vision.MPPPPPPtrun] runtime.cc:655] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:8053)
    [vision.MPPPPPPtrun] runtime.cc:655] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
    [vision.MPPPPPPtrun] runtime.cc:655] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:656)
    [vision.MPPPPPPtrun] runtime.cc:655] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:967)
    [vision.MPPPPPPtrun] runtime.cc:655]
    [vision.MPPPPPPtrun] runtime.cc:663] JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethodA called with pending exception android.runtime.JavaProxyThrowable: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Java.Lang.SecurityException: getDataNetworkTypeForSubscriber
    [vision.MPPPPPPtrun] runtime.cc:663] at Java.Interop.JniEnvironment+InstanceMethods.CallIntMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0006e] in <8ef750301d7a44afa51374713c06665c>:0
    [vision.MPPPPPPtrun] runtime.cc:663] at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualInt32Method (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <8ef750301d7a44afa51374713c06665c>:0
    [vision.MPPPPPPtrun] runtime.cc:663] at Android.Telephony.TelephonyManager.get_DataNetworkType () [0x00000] in /Users/builder/azdo/_work/2/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-30/mcw/Android.Telephony.TelephonyManager.cs:1092
    [vision.MPPPPPPtrun] runtime.cc:663] at CCCCCCC.YYYYYYYYYApps.Library.AppXXXX.Droid.Dependencies.Connectivity.IsConnectedFast (Android.Content.Context context) [0x00019] in C:\EC\git\EA2019\Library\AppXXXX\AppXXXX.Droid\Dependencies\Connectivity.cs:67
    [vision.MPPPPPPtrun] runtime.cc:663] at CCCCCCC.YYYYYYYYYApps.Library.AppXXXX.Droid.Dependencies.Connectivity.IsAboveBandwidth () [0x00010] in C:\EC\git\EA2019\Library\AppXXXX\AppXXXX.Droid\Dependencies\Connectivity.cs:28
    [vision.MPPPPPPtrun] runtime.cc:663] at CCCCCCC.YYYYYYYYYApps.MMMMMMMMEntry.App.get_IsConnected () [0x00000] in C:\EC\git\EA2019\MPPPPPP\MMMMMMMMEntry\App.xaml.cs:305
    [vision.MPPPPPPtrun] runtime.cc:663] at CCCCCCC.YYYYYYYYYApps.MMMMMMMMEntry.ViewModel.LandingPageViewModel.<.ctor>b__19_1 () [0x00001] in C:\EC\git\EA2019\MPPPPPP\MMMMMMMMEntry\ViewModel\LandingPageViewModel.cs:110
    [vision.MPPPPPPtrun] runtime.cc:663] at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
    [vision.MPPPPPPtrun] runtime.cc:663] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:395
    [vision.MPPPPPPtrun] runtime.cc:663] --- End of inner exception stack trace ---
    [vision.MPPPPPPtrun] runtime.cc:663] at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00081] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:409
    [vision.MPPPPPPtrun] runtime.cc:663] at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Reflection/MethodBase.cs:53
    [vision.MPPPPPPtrun] runtime.cc:663] at GalaSoft.MvvmLight.Helpers.WeakAction.Execute () [0x0003c] in <78ffd8a7ebb14429abd6d5d1a8a53baf>:0
    [vision.MPPPPPPtrun] runtime.cc:663] at GalaSoft.MvvmLight.Command.RelayCommand.Execute (System.Object parameter) [0x0002b] in <78ffd8a7ebb14429abd6d5d1a8a53baf>:0
    [vision.MPPPPPPtrun] runtime.cc:663] at Xamarin.Forms.ButtonElement.ElementClicked (Xamarin.Forms.VisualElement visualElement, Xamarin.Forms.Internals.IButtonElement ButtonElementManager) [0x00008] in D:\a\1\s\Xamarin.Forms.Core\ButtonElement.cs:60
    [vision.MPPPPPPtrun] runtime.cc:663] at Xamarin.Forms.Button.SendClicked () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Button.cs:173
    [vision.MPPPPPPtrun] runtime.cc:663] at Xamarin.Forms.Platform.Android.ButtonRenderer+ButtonClickListener.OnClick (Android.Views.View v) [0x0000f] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ButtonRenderer.cs:340
    [vision.MPPPPPPtrun] runtime.cc:663] at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00010] in /Users/builder/azdo/_work/2/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-30/mcw/Android.Views.View.cs:2424
    [vision.MPPPPPPtrun] runtime.cc:663] at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.60(intptr,intptr,intptr)
    [vision.MPPPPPPtrun] runtime.cc:663] at void crc643f46942d9dd1fff9.ButtonRenderer_ButtonClickListener.n_onClick(android.view.View) (ButtonRenderer_ButtonClickListener.java:-2)
    [vision.MPPPPPPtrun] runtime.cc:663] at void crc643f46942d9dd1fff9.ButtonRenderer_ButtonClickListener.onClick(android.view.View) (ButtonRenderer_ButtonClickListener.java:30)
    [vision.MPPPPPPtrun] runtime.cc:663] at boolean android.view.View.performClick() (View.java:7576)
    [vision.MPPPPPPtrun] runtime.cc:663] at boolean android.view.View.performClickInternal() (View.java:7553)
    [vision.MPPPPPPtrun] runtime.cc:663] at boolean android.view.View.access$3600(android.view.View) (View.java:842)
    [vision.MPPPPPPtrun] runtime.cc:663] at void android.view.View$PerformClick.run() (View.java:28786)
    [vision.MPPPPPPtrun] runtime.cc:663] at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:938)
    [vision.MPPPPPPtrun] runtime.cc:663] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
    [vision.MPPPPPPtrun] runtime.cc:663] at void android.os.Looper.loop() (Looper.java:233)
    [vision.MPPPPPPtrun] runtime.cc:663] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:8053)
    [vision.MPPPPPPtrun] runtime.cc:663] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
    [vision.MPPPPPPtrun] runtime.cc:663] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:656)
    [vision.MPPPPPPtrun] runtime.cc:663] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:967)
    [vision.MPPPPPPtrun] runtime.cc:663]
    [vision.MPPPPPPtrun] runtime.cc:663] in call to CallObjectMethodA
    [vision.MPPPPPPtrun] runtime.cc:663] from void crc643f46942d9dd1fff9.ButtonRenderer_ButtonClickListener.n_onClick(android.view.View)

    0 comments No comments