2012-06-02 39 views
0

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

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

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

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

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

回答

2

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

随着WebView您可以通过附加WebViewClient,以及使用它的方法就像onPageStarted()shouldOverrideUrlLoading()来确定何时跳回到以前的活动或做一些其他的动作监控网址的流量。既然你在做这一切的代码,你找的URL可以是动态的,即使被传入为Intent额外与WebView

HTH

活动