服务未在Microsoft身份验证库(Android)上注册

时间:2019-06-04 08:30:54

标签: android kotlin msal

我使用的是来自MSAL Android库的示例应用程序的修改版本,过去几周,它的工作原理非常吸引人,但直到昨天,它才开始崩溃,给我这个错误:

  

2019-06-04 15:22:07.807 20645-20645 / com.example.myApp E / AndroidRuntime:FATAL

     

例外:主要       流程:com.example.myApp,PID:20645       java.lang.RuntimeException:无法恢复活动{com.example.myApp / com.example.myApp.Activities.LoginActivity}:java.lang.RuntimeException:无法交付结果ResultInfo {who = null,request = 1001,result = 2003 ,data = Intent {(有其他功能)}}到活动{com.example.myApp / com.example.myApp.Activities.LoginActivity}:java.lang.IllegalArgumentException:服务未注册:com.microsoft.identity.common.internal .ui.browser.CustomTabsManager $ 1 @ f965d28           在android.app.ActivityThread.performResumeActivity(ActivityThread.java:3961)           在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3993)           在android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)           在android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)           在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)           在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1934)           在android.os.Handler.dispatchMessage(Handler.java:106)           在android.os.Looper.loop(Looper.java:193)           在android.app.ActivityThread.main(ActivityThread.java:6940)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:537)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)        由以下原因引起:java.lang.RuntimeException:无法将结果ResultInfo {who = null,request = 1001,result = 2003,data = Intent {(has extras}}}传递给活动{com.example.myApp / com.example.myApp .Activities.LoginActivity}:java.lang.IllegalArgumentException:服务未注册:com.microsoft.identity.common.internal.ui.browser.CustomTabsManager$1@f965d28

对于示例应用程序的工作原理,我没有做任何更改。我唯一要做的就是将登录逻辑转移到一个单独的静态类中。

该代码仍可用于大多数手机,甚至可用于仿真器,但我无法使其与Oneplus 6一起使用。

这很奇怪,因为我没有进行任何更改,并且突然开始停止工作。

以下代码行导致崩溃:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    app?.handleInteractiveRequestRedirect(requestCode, resultCode, data)
}

1 个答案:

答案 0 :(得分:0)

我为那些可能遇到与我相同的问题的人找到了解决方法。我最初使用默认方法来处理身份验证过程(通过意图和BrowserTab)。

另一种进行身份验证的方法是编辑auth_config.json文件夹中的Raw文件,并将用户代理更改为此"authorization_user_agent": "WEBVIEW"。您必须使用WebView而不是浏览器,但这确实可以防止应用崩溃。如果您要走这条路线,那么您也不需要AndroidManifest文件中的意图过滤器。

PS:尽管如此,我仍然无法查明是什么导致我的手机崩溃。我能够在Galaxy S9和模拟器上测试我的应用程序,并且它们都能正常工作。我的个人电话一直可以工作到最近,这正是促使我在此处发布的原因。如果找到原因,我将更新此答案。

相关问题