0

<intent-filter>我可以通过添加清单文件来静态注册我的活动以处理 startActivity() 。但是,当我的活动正在运行时,如何动态注册它?例如,单击按钮后如何注册?

我的应用程序要求用户指定一个 URL,然后我想处理对这个 URL 的浏览请求。所以我只能在运行时获取这个 URL。我查看了 registerReceiver(),却发现它只对 sendBroadcast() 有用,对 startActivity() 没有用。

事实上,我正在与服务器进行 OAuth 身份验证,并且我想在 OAuth 之后返回我的活动。所以我想处理<server-api-path>/auth/displaycode路径。

我知道我可以使用自定义 URL 方案并在清单文件中静态处理它,但是根据1,这不是一个好习惯。

在文档中搜索了一个下午后,我仍然无法弄清楚这一点。任何帮助表示赞赏。

4

1 回答 1

2

没有 API 可以在运行时动态注册新的 Activity 元素或修改 AndroidManifest 的内容。接收 OAuth 回调的最佳选择是实现包含 的单个 Activity WebView,而不是启动浏览器或某些外部应用程序并尝试返回。

您可以通过附加, 并使用其方法(如和)来WebView监控 URL 流量,以确定何时跳回上一个 Activity 或执行其他操作。由于您在代码中执行所有这些操作,因此您查找的 URL 可以是动态的,甚至可以通过WebViewClientonPageStarted()shouldOverrideUrlLoading()IntentWebView

高温高压

于 2012-06-04T14:10:33.613 回答