我可以通过在清单文件中添加<intent-filter>
来静态注册我的活动来处理startActivity()。但是,如何在我的活动运行时动态注册它?例如,如何在单击按钮后注册?
我的应用程序要求用户指定一个URL,然后我想处理对此URL的浏览请求。所以我只能在运行时获取此URL。我查看registerReceiver()只发现它只对sendBroadcast()有用,而不是对startActivity()有用。
事实上,我正在对服务器进行OAuth身份验证,我想在OAuth之后返回我的活动。所以我想处理<server-api-path>/auth/displaycode
路径。
我知道我可以使用自定义URL方案并在清单文件中静态处理它,但根据1,这不是一个好习惯。
在文件中搜索了一个下午之后,我仍然无法弄清楚这一点。任何帮助表示赞赏。
答案 0 :(得分:2)
没有API可以在运行时动态注册新的Activity元素或修改AndroidManifest的内容。接收OAuth回调的最佳选择是实现包含WebView
的单个Activity,而不是启动浏览器或某个外部应用程序并尝试返回。
使用WebView
,您可以通过附加WebViewClient
并使用onPageStarted()
和shouldOverrideUrlLoading()
等方法来确定何时跳回上一个活动来监控网址流量或做一些其他的行动。由于您在代码中执行了所有这些操作,因此您查找的网址可能是动态的,甚至可以Intent
额外传入带有WebView
的活动
HTH