Android – 活动外的startActivityForResult?

Android – 活动外的startActivityForResult?,第1张

概述我有一个包装类(BluetoothDiscoverer),它在服务中实例化.此类获取BluetoothAdapter并在扫描相邻设备之前检查是否启用了蓝牙. 现在,如果未启用蓝牙,我希望能够在此类(BluetoothDiscoverer)中执行以下 *** 作: Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUE 我有一个包装类(Bluetoothdiscoverer),它在服务中实例化.此类获取BluetoothAdapter并在扫描相邻设备之前检查是否启用了蓝牙.

现在,如果未启用蓝牙,我希望能够在此类(Bluetoothdiscoverer)中执行以下 *** 作:

Intent enableBluetoothIntent  = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBluetoothIntent,BLUetoOTH_ENABLER);

现在我读到了这个:use startActivityForResult from non-activity

但我不想将我的主要活动传递到这个对象,因为我想处理结果(用户是否接受启用蓝牙)
在Bluetoothdiscoverer类中.

现在如果我使Bluetoothdiscoverer成为Activity的子类

当startActivityForResult即将被调用时,我似乎得到一个NullPointerException.

我想这是因为我需要添加一个onCreate()/ onDestroy()方法,
但这违背了我正在做的目的,因为我需要能够在实例化该类的服务中调用Bluetoothdiscoverer对象上的方法.

我还需要注册广播接收器,以便在启动扫描时检索相邻设备.如果Bluetoothdiscoverer类不是Activity,我该如何注册此接收器?

有没有解决这个问题?

谢谢
安德烈亚斯

解决方法 startActivityForResult()仅适用于真实的屏幕活动.请重新设计您的应用程序,以便从活动中驱动用户界面,然后让您的服务扫描设备.

I also need to register a broadcast receiver for retrIEving neighbouring devices when a scan is initiated. If the Bluetoothdiscoverer class is not an Activity,how do I register this receiver?

你摆脱了Bluetoothdiscoverer并将其逻辑移入服务,这是一个Context,因此可以注册接收器.

总结

以上是内存溢出为你收集整理的Android – 活动外的startActivityForResult?全部内容,希望文章能够帮你解决Android – 活动外的startActivityForResult?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存