我使用的是来自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)
}
答案 0 :(得分:0)
我为那些可能遇到与我相同的问题的人找到了解决方法。我最初使用默认方法来处理身份验证过程(通过意图和BrowserTab)。
另一种进行身份验证的方法是编辑auth_config.json
文件夹中的Raw
文件,并将用户代理更改为此"authorization_user_agent": "WEBVIEW"
。您必须使用WebView而不是浏览器,但这确实可以防止应用崩溃。如果您要走这条路线,那么您也不需要AndroidManifest
文件中的意图过滤器。
PS:尽管如此,我仍然无法查明是什么导致我的手机崩溃。我能够在Galaxy S9和模拟器上测试我的应用程序,并且它们都能正常工作。我的个人电话一直可以工作到最近,这正是促使我在此处发布的原因。如果找到原因,我将更新此答案。