cocoa-mhlw / cocoa

Mozilla Public License 2.0
990 stars 113 forks source link

[Android] マルチユーザー(プライマリーユーザーでない)環境でクラッシュする #632

Closed keiji closed 2 years ago

keiji commented 2 years ago

不具合の内容 / Describe the bug

マルチユーザー(複数ユーザー)環境で、プライマリーユーザーでない場合(2人目以降のユーザーの場合)、接触確認が有効にすることができず、初期設定時にクラッシュする。

再現手順 / Steps to reproduce

  1. マルチユーザー環境(プライマリーユーザーでない状態で)でCOCOAを起動する
  2. 接触通知機能を有効にする
  3. クラッシュする

期待される挙動 / Expected behavior

プライマリーユーザーでなくても接触確認APIが利用できる。利用開始できる。

スクリーンショット / Screenshots

動作環境 / Environments

その他 / Additional context

Androidの接触確認APIはマルチユーザー環境では動作しないはず。 確認して接触確認APIの制約であれば、課題自体はwon't fixとする。

マルチユーザーが原因で接触確認APIが使えないことをCOCOAから知ることができれば、アラートなどで案内するのが親切だと思う。


Internal IDs:

b-wind commented 2 years ago

Exposure Notifications System の仕組みから考えると同一端末を複数ユーザーで使い回すことは想定に無さそうに思えます。

仮に動作するとしても、複数アカウントが同一人物なのか複数人利用なのかでCOCOAとしてどう捉えるかの検討が必要そう。

適切なアナウンスが出せるなら出した方が良いと思います。

keiji commented 2 years ago

ApiExceptionの17が出てました。 これならcatchできそうです。

https://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes#public-static-final-int-api_not_connected

Caused by: com.google.android.gms.common.api.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39501), resolution=null, message=null}
12-23 10:27:33.765 29130 29130 V mono-stdout: "2021/12/23 10:27:33","Info","End","IsCanConfirmExposure","/Users/keiji_ariyama/Projects/cocoa/Covid19Radar/Covid19Radar/Repository/UserDataRepository.cs","458","Android","12","Pixel 3","Physical","APP_VERSION","5"
12-23 10:27:33.769 29130 29130 V mono-stdout: "2021/12/23 10:27:33","Info","End","UpdateView","/Users/keiji_ariyama/Projects/cocoa/Covid19Radar/Covid19Radar/ViewModels/HomePage/HomePageViewModel.cs","316","Android","12","Pixel 3","Physical","APP_VERSION","5"
12-23 10:27:33.773 29130 29130 D AndroidRuntime: Shutting down VM
12-23 10:27:33.774 29130 29130 E AndroidRuntime: FATAL EXCEPTION: main
12-23 10:27:33.774 29130 29130 E AndroidRuntime: Process: APP_PACKAGE_NAME.APP_PACKAGE_NAME, PID: 29130
12-23 10:27:33.774 29130 29130 E AndroidRuntime: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
12-23 10:27:33.774 29130 29130 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    ... 1 more
12-23 10:27:33.774 29130 29130 E AndroidRuntime: Caused by: com.google.android.gms.common.api.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39501), resolution=null, message=null}
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.google.android.gms.common.api.internal.TaskUtil.trySetResultOrApiException(com.google.android.gms:play-services-base@@17.6.0:3)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.google.android.gms.internal.nearby.zzan.onResult(com.google.android.gms:play-services-nearby@@18.0.3:1)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.google.android.gms.common.api.internal.IStatusCallback$Stub.zaa(com.google.android.gms:play-services-base@@17.6.0:2)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at com.google.android.gms.internal.base.zab.onTransact(com.google.android.gms:play-services-base@@17.6.0:3)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at android.os.Binder.execTransactInternal(Binder.java:1184)
12-23 10:27:33.774 29130 29130 E AndroidRuntime:    at android.os.Binder.execTransact(Binder.java:1143)
12-23 10:27:33.779 29130 29130 I MonoDroid: UNHANDLED EXCEPTION:
12-23 10:27:33.783 29130 29130 I MonoDroid: Java.Lang.RuntimeException: java.lang.reflect.InvocationTargetException ---> Java.Lang.ReflectiveOperationException: Exception of type 'Java.Lang.ReflectiveOperationException' was thrown. ---> Android.Gms.Common.Apis.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39501), resolution=null, message=null}
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Chino.Android.Google.ExposureNotificationClient.StartAsync () [0x00098] in <672c8d30e1cb474994b1c3756583e6d4>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Covid19Radar.Droid.Services.ExposureNotificationApiService.StartAsync () [0x0006e] in <eed2c552e51946e88f3dbadc01b4a960>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Covid19Radar.Droid.Services.ExposureNotificationApiService.StartExposureNotificationAsync () [0x000be] in <eed2c552e51946e88f3dbadc01b4a960>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Covid19Radar.ViewModels.HomePageViewModel.StartExposureNotificationAsync () [0x000be] in <fd51507eda3c450b98e7278020c81aa4>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Covid19Radar.ViewModels.HomePageViewModel.Initialize (Prism.Navigation.INavigationParameters parameters) [0x00158] in <fd51507eda3c450b98e7278020c81aa4>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <3b721fa860444161ac75dca51ec0476f>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in <e02651e0999f40db8f098ddac8bd9323>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <e02651e0999f40db8f098ddac8bd9323>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <e02651e0999f40db8f098ddac8bd9323>:0
12-23 10:27:33.783 29130 29130 I MonoDroid:   at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.57(intptr,intptr)
12-23 10:27:33.783 29130 29130 I MonoDroid:    --- End of inner exception stack trace ---
12-23 10:27:33.783 29130 29130 I MonoDroid:    --- End of inner exception stack trace ---
12-23 10:27:33.783 29130 29130 I MonoDroid:   --- End of managed Java.Lang.RuntimeException stack trace ---
12-23 10:27:33.783 29130 29130 I MonoDroid: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
12-23 10:27:33.783 29130 29130 I MonoDroid: Caused by: java.lang.reflect.InvocationTargetException
12-23 10:27:33.783 29130 29130 I MonoDroid:     at java.lang.reflect.Method.invoke(Native Method)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
12-23 10:27:33.783 29130 29130 I MonoDroid:     ... 1 more
12-23 10:27:33.783 29130 29130 I MonoDroid: Caused by: com.google.android.gms.common.api.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39501), resolution=null, message=null}
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.google.android.gms.common.api.internal.TaskUtil.trySetResultOrApiException(com.google.android.gms:play-services-base@@17.6.0:3)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.google.android.gms.internal.nearby.zzan.onResult(com.google.android.gms:play-services-nearby@@18.0.3:1)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.google.android.gms.common.api.internal.IStatusCallback$Stub.zaa(com.google.android.gms:play-services-base@@17.6.0:2)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at com.google.android.gms.internal.base.zab.onTransact(com.google.android.gms:play-services-base@@17.6.0:3)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at android.os.Binder.execTransactInternal(Binder.java:1184)
12-23 10:27:33.783 29130 29130 I MonoDroid:     at android.os.Binder.execTransact(Binder.java:1143)
12-23 10:27:33.783 29130 29130 I MonoDroid:
12-23 10:27:33.786  1980  4154 W ActivityTaskManager:   Force finishing activity APP_PACKAGE_NAME.APP_PACKAGE_NAME/crc6409d08e6225047de9.MainActivity
keiji commented 2 years ago

これもう少し優先度上げて対応した方がよさそう。 https://www.facebook.com/noritsuna/posts/10221460225155151

keiji commented 2 years ago

開発チームより「そもそも初期設定時にクラッシュしますね」と指摘をもらったので、タイトルや内容を調整しました。

初期設定が終わってホーム画面の表示まで行くパターンは、設定ファイルがリストアされたとかそういう理由かも。

keiji commented 2 years ago

開発チームより、ホームページが表示されたパターンで「複数ユーザーはサポートしていません」ダイアログが表示されないという報告があったのでreopenします。