我想在this example中启用蓝牙。
但是我的类不是Activity而是Service,因此我无法调用startActivityForResult。我怎么解决这个问题?。我知道还有其他一些问题已经回答过,如
use startActivityForResult from non-activity
但这并不能解决我的问题,因为我的应用程序包含服务而不是其他任何内容。
答案 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的建议绑定到服务也可以,但是似乎更复杂:)