如何动态注册我的活动来处理startActivity()?

时间:2012-06-02 20:19:28

标签: android android-intent android-activity intentfilter

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

使用WebView,您可以通过附加WebViewClient并使用onPageStarted()shouldOverrideUrlLoading()等方法来确定何时跳回上一个活动来监控网址流量或做一些其他的行动。由于您在代码中执行了所有这些操作,因此您查找的网址可能是动态的,甚至可以Intent额外传入带有WebView的活动

HTH