I wanted to update the UI of My MainActivity when the bluetooth is On/Off
MainActivity
private val broadcastReceiver = Broadcast()
open var bluetooth : ImageView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val filter = IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)
registerReceiver(broadcastReceiver, filter)
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
bluetooth = findViewById(R.id.image_bluetooth)
val bluetoothName = findViewById<TextView>(R.id.text_bluetooth_name)
bluetoothName.text = bluetoothAdapter.name
bluetooth?.setOnClickListener {
if (!bluetoothAdapter.isEnabled) {
val turnOn = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResult(turnOn, 0)
} else {
bluetoothAdapter.disable()
}
}
}
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(broadcastReceiver)
}
fun enableBluetooth()
{
bluetooth?.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_bluetooth_enable_48dp))
}
fun disableBluetooth()
{
bluetooth?.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_bluetooth_disable_48dp))
}
BroadcastReceiver
class Broadcast : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val action = intent?.action
val mainActivity = MainActivity()
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
when (intent?.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
BluetoothAdapter.STATE_OFF -> {
Toast.makeText(context, "Bluetooth Turned OFF", Toast.LENGTH_LONG).show()
mainActivity.disableBluetooth()
}
BluetoothAdapter.STATE_ON -> {
Toast.makeText(context, "Bluetooth Turned ON", Toast.LENGTH_LONG).show()
mainActivity.enableBluetooth()
}
}
}
}
}
After the onReceive call in BroadcastReceiver, in enableBluetooth and disableBluetooth method bluetooth value return null.Can any one help to over come the process?Thanks in advance
For this case, use On onActivityResult Method to update the UI
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 0 && bluetoothAdapter!!.isEnabled) {
Toast.makeText(this, "Bluetooth Turned ON", Toast.LENGTH_LONG).show()
image_bluetooth?.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_bluetooth_enable_48dp))
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.