2

Firebase 在我的 Xamarin.Android 应用程序中注册了一些异常。

有一个异常跟踪:

致命异常:md5bcaacea39e485ed8e3d7f0e2edda77a7.MonoExceptionHelper: (RuntimeException) getImeiForSlot at Java.Interop.JniEnvironment+InstanceMethods.CallObjectMethod(Java.Interop.JniObjectReference 实例,Java.Interop.JniMethodInfo 方法,Java.Interop.JniArgumentValue* args)0x00069 在 Java.Interop。 JniPeerMembers+JniInstanceMethods.InvokeVirtualObjectMethod(System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters)0x0002a at Android.Telephony.TelephonyManager.GetImei(System.Int32 slotIndex)0x00022 at MyApp.UI.Droid.Activity .ForgotPasswordView.GetDeviceId()0x0002d 在 MyApp.UI.Droid.Activity.ForgotPasswordView.GetDeviceIdentifier()0x00000 在 MyApp.Core.ViewModels.LostPasswordViewModel.Ok()0x000b0 在 System.Runtime.CompilerServices。AsyncMethodBuilderCore+<>c.b__6_0(System.Object state)0x00000 at Android.App.SyncContext+<>c__DisplayClass2_0.b__0()0x00000 at Java.Lang.Thread+RunnableImplementor.Run()0x00008 at Java.Lang.IRunnableInvoker.n_Run(System .IntPtr jnienv, System.IntPtr native__this)0x00009 at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.16(intptr,intptr).(unknown.cs:1) at --- End of managed Java.Lang.RuntimeException堆栈跟踪 ---.(unknown.cs:1) at java.lang.SecurityException: getImeiForSlot.(unknown.cs:1) at at android.os.Parcel.createException(Parcel.java:1966).(unknown.cs :1) 在 android.os.Parcel.readException(Parcel.java:1934).(unknown.cs:1) 在 android.os.Parcel.readException(Parcel.java:1884).(unknown.cs:1 ) at com。android.internal.telephony.ITelephony$Stub$Proxy.getImeiForSlot(ITelephony.java:5903).(unknown.cs:1) 在 android.telephony.TelephonyManager.getImei(TelephonyManager.java:1830).(unknown.cs: 1) 在 mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method).(unknown.cs:1) 在 mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30).(unknown.cs:1 ) 在 android.view.View.performClick(View.java:7352).(unknown.cs:1) 在 android.widget.TextView.performClick(TextView.java:14177).(unknown.cs:1) 在在 android.view.View.performClickInternal(View.java:7318).(unknown.cs:1) 在 android.view.View.access$3200(View.java:846).(unknown.cs:1) 在android.view.View$PerformClick.run(View.java:27801).(unknown.cs:1) 在 android.os.Handler.handleCallback(Handler.java:873).(unknown.cs:1) 在 android.os.Handler.dispatchMessage(Handler.java:99).(unknown.cs:1)在 android.os.Looper.loop(Looper.java:214).(unknown.cs:1) 在 android.app.ActivityThread.main(ActivityThread.java:7032).(unknown.cs:1) 在java.lang.reflect.Method.invoke(Native Method).(unknown.cs:1) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493).(unknown.cs:1 ) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964).(unknown.cs:1)1) 在 android.app.ActivityThread.main(ActivityThread.java:7032).(unknown.cs:1) 在 java.lang.reflect.Method.invoke(Native Method).(unknown.cs:1) 在在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493).(unknown.cs:1) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)。 (未知.cs:1)1) 在 android.app.ActivityThread.main(ActivityThread.java:7032).(unknown.cs:1) 在 java.lang.reflect.Method.invoke(Native Method).(unknown.cs:1) 在在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493).(unknown.cs:1) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)。 (未知.cs:1)

我的GetDeviceId方法:

     var telephonyDeviceID = string.Empty;
     var telephonySIMSerialNumber = string.Empty;
     TelephonyManager telephonyManager = (TelephonyManager)Application.Context.GetSystemService(Context.TelephonyService);
     if (telephonyManager != null)
     {
        if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
           {
            telephonyDeviceID = telephonyManager.GetImei(0);
            if (telephonyDeviceID.Length == 0)
               {
                  telephonyDeviceID = telephonyManager.GetMeid(0);
               }
            }
             else
            {
               telephonyDeviceID = telephonyManager.DeviceId;
            }
       if (!string.IsNullOrEmpty(telephonyManager.SimSerialNumber))
          telephonySIMSerialNumber = telephonyManager.SimSerialNumber;
                }
    var androidID = Android.Provider.Settings.Secure.GetString(Application.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);
    var deviceUuid = new UUID(androidID.GetHashCode(), ((long)telephonyDeviceID.GetHashCode() << 32) | telephonySIMSerialNumber.GetHashCode());
    var deviceID = deviceUuid.ToString();
return deviceID;

我也有许可READ_PHOHE_STATE

在三星 S10e、诺基亚 1 和华为 P20 Pro 上记录了崩溃,但我无法在我的安卓设备上重现它。

有没有可能弄清楚这个问题?

4

1 回答 1

0

您必须配置用户的运行时权限才能使用此服务。请求用户授予权限。请参阅运行时请求

于 2019-10-15T06:42:27.267 回答