Flutterとauth0の認証でandroid.content.ActivityNotFoundExceptionが起きたときの対処方法について|Minato.I|note

こんにちは、株式会社Pentagonでアプリ開発をしている石渡港です。

android.content.ActivityNotFoundExceptionが起きたときの対処方法について簡単にまとめます。

目次

引用記事

https://note.com/embed/notes/nfc1364ea10ed

エラーログ

D/AndroidRuntime( 6770): Shutting down VM
E/AndroidRuntime( 6770): FATAL EXCEPTION: main
E/AndroidRuntime( 6770): Process: com.example.hoge, PID: 6770
E/AndroidRuntime( 6770): android.content.ActivityNotFoundException
E/AndroidRuntime( 6770):    at net.openid.appauth.AuthorizationService.prepareAuthorizationRequestIntent(AuthorizationService.java:372)
E/AndroidRuntime( 6770):    at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent(AuthorizationService.java:267)
E/AndroidRuntime( 6770):    at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent(AuthorizationService.java:296)
E/AndroidRuntime( 6770):    at io.crossingthestreams.flutterappauth.FlutterAppauthPlugin.performAuthorization(FlutterAppauthPlugin.java:315)
E/AndroidRuntime( 6770):    at io.crossingthestreams.flutterappauth.FlutterAppauthPlugin.access$300(FlutterAppauthPlugin.java:40)
E/AndroidRuntime( 6770):    at io.crossingthestreams.flutterappauth.FlutterAppauthPlugin$2.onFetchConfigurationCompleted(FlutterAppauthPlugin.java:232)
E/AndroidRuntime( 6770):    at net.openid.appauth.AuthorizationServiceConfiguration$ConfigurationRetrievalAsyncTask.onPostExecute(AuthorizationServiceConfiguration.java:364)
E/AndroidRuntime( 6770):    at net.openid.appauth.AuthorizationServiceConfiguration$ConfigurationRetrievalAsyncTask.onPostExecute(AuthorizationServiceConfiguration.java:305)
E/AndroidRuntime( 6770):    at android.os.AsyncTask.finish(AsyncTask.java:771)
E/AndroidRuntime( 6770):    at android.os.AsyncTask.access$900(AsyncTask.java:199)
E/AndroidRuntime( 6770):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
E/AndroidRuntime( 6770):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 6770):    at android.os.Looper.loop(Looper.java:223)
E/AndroidRuntime( 6770):    at android.app.ActivityThread.main(ActivityThread.java:7656)
E/AndroidRuntime( 6770):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 6770):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/AndroidRuntime( 6770):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

環境

...
   defaultConfig {
       applicationId "com.example.hoge"
       minSdkVersion 19
       targetSdkVersion 30
       versionCode flutterVersionCode.toInteger()
       versionName flutterVersionName
       manifestPlaceholders = [
               'appAuthRedirectScheme': '${applicationId}',
       ]
   }
...

画面遷移のエラーかと思いましたが、設定が抜けていたのが原因でした。

対処法

API 30(Android 11)以降の利用の際に起きるエラーでした。こちらに設定方法が載っており、下記のコードを埋め込むだけでエラーが発生しなくなりました。(ログインの際に外部のブラウザへ遷移していました。)

<queries>
   <intent>
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.BROWSABLE" />
       <data android:scheme="https" />
   </intent>
   <intent>
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.APP_BROWSER" />
       <data android:scheme="https" />
   </intent>
</queries>

採用情報はこちら
目次