BroadcastReceiver

718 阅读1分钟

BroadActivity

class BroadActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_broad)
        button14.setOnClickListener {
            //定义,发送广播
            val intent = Intent("com.android.server.scannerservice.broadcast")
            intent.putExtra("broadkey", editText.text.toString())
            sendBroadcast(intent)
        }
    }

    //实例化receiver要在方法里,所以这里用by lazy
    private val mScanDataReceiver: BroadcastReceiver by lazy { MyReceiver(textView3) }

    override fun onResume() {
        val scanDataIntentFilter = IntentFilter()
        scanDataIntentFilter.addAction("com.android.server.scannerservice.broadcast")
        registerReceiver(mScanDataReceiver, scanDataIntentFilter)
        super.onResume()
    }

    override fun onPause() {
        unregisterReceiver(mScanDataReceiver)
        super.onPause()
    }
}

MyReceiver

class MyReceiver(private val textView3: TextView) : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        val action = intent.action
        if (action == "com.android.server.scannerservice.broadcast") {
            val scanCode = intent.getStringExtra("broadkey")
            textView3.text = scanCode
        }
    }
}

AndroidManifest.xml

<receiver
            android:name=".receiver.MyReceiver"
            android:enabled="true"
            android:exported="true"></receiver>