Приемник широковещания с BluetoothAdapter.ACTION_STATE_CHANGED Действие (Oreo) - PullRequest
2 голосов
/ 29 мая 2019

Мое приложение для Android имеет версию targetdk 28, и я читал, что широковещательные приемники более ограничены версией 27 и выше.Учитывая это, я пытался поймать, когда Bluetooth включен и выключен с Broadcast Receiver.Он работает более чем нормально, когда приложение открыто, но когда я убираю его из своих последних записей, я больше не получаю тосты и сообщения журнала.Я просто не уверен, как бы я продолжал работать с ресивером, даже не открывая приложение.(Я исключил весь ненужный код из основной деятельности)

Android Manifest.xml

<uses-permission android:name="android.permission.BLUETOOTH"/>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <service android:name=".NotificationsMessagingService">
            <intent-filter android:priority="1">
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".BReceivers" android:exported="true" android:enabled="true">
            <intent-filter>
                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
            </intent-filter>
        </receiver>
    </application>

MainActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }
}

BReceivers.kt

import android.bluetooth.BluetoothAdapter
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import android.widget.Toast

class BReceivers : BroadcastReceiver() {
    companion object {
        const val TAG = "Bluetoooth"
    }

    override fun onReceive(context: Context?, intent: Intent?) {

        if (intent?.action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
            when(intent?.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
                BluetoothAdapter.STATE_OFF -> Log.d(TAG, "Bluetooth is OFF")
                BluetoothAdapter.STATE_TURNING_OFF ->  Toast.makeText(context, "Bluetooth is turning off", Toast.LENGTH_LONG).show()
                BluetoothAdapter.STATE_ON ->  Log.d(TAG, "Bluetooth is ON")
                BluetoothAdapter.STATE_TURNING_ON ->  Toast.makeText(context, "Bluetooth is turning ON", Toast.LENGTH_LONG).show()
            }
        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...