来自服务的StartActivityForResult

时间:2010-08-10 11:37:13

标签: java android bluetooth

我想在this example中启用蓝牙。

但是我的类不是Activity而是Service,因此我无法调用startActivityForResult。我怎么解决这个问题?。我知道还有其他一些问题已经回答过,如

use startActivityForResult from non-activity

但这并不能解决我的问题,因为我的应用程序包含服务而不是其他任何内容。

4 个答案:

答案 0 :(得分:15)

不幸的是你做不到。

我找到的唯一解决方案(黑客)首先打开一个带有Dialog风格的Activity,然后在那里进行调用。

答案 1 :(得分:13)

我知道这是一个较老的问题,但我遇到了类似的挑战,我的解决方案是用android:theme =“@ android:style / Theme.NoDisplay”创建一个活动,然后调用startActivityForResult( )从那。这会创建一个不可见的活动,可以在将数据写入某个地方然后自行完成之前请求和接收意图。

答案 2 :(得分:0)

我认为解决方案是从您的服务启动活动,然后将活动绑定到服务并注册回调

答案 3 :(得分:0)

我知道这是一个更老的问题,但是我遇到了类似的挑战,我的解决方案是使用startActivity()而不是startActivityForResult()并使用Intent.FLAG_ACTIVITY_NEW_TASK来启动活动。然后从活动而不是setResult()调用startService(),然后使用onStartCommand()代替onActivityResult()。

按照@Pomagranite的建议绑定到服务也可以,但是似乎更复杂:)

相关问题