Android - startActivityForResult outside an Activity?
startActivityForResult()
is only available from real on-screen activities. Please redesign your application so that the user interface is driven from activities, then have your service scan for devices.
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?
You get rid of BluetoothDiscoverer
and move its logic into the Service
, which is a Context
and therefore can register receivers.
kkudi
Updated on June 15, 2022Comments
-
kkudi about 2 years
I have a wrapper class (BluetoothDiscoverer) which is instantiated within a Service. This class obtains a BluetoothAdapter and checks whether Bluetooth is enabled before scanning for neighbouring devices.
Now if Bluetooth is not enabled I want to be able to do the following within this class (BluetoothDiscoverer):
Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetoothIntent, BLUETOOTH_ENABLER);
Now I have read this: use startActivityForResult from non-activity
but I don't want to pass my Main Activity into this object since I want to deal with the result (whether the user accepts to enable bluetooth or not) within the BluetoothDiscoverer class.
Now If I make BluetoothDiscoverer a subclass of Activity
I seem to be getting a NullPointerException when the startActivityForResult is about to be called.
I think this is because I need to add an onCreate()/onDestroy() method, but this defeats the purpose of what I am doing as I need to be able to call methods on the BluetoothDiscoverer object within the service that instantiates this class.
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?
Is there a work around for this?
Thank you Andreas