除非先创建一个活动,否则我无法在BroadcastReceiver中显示祝酒词

时间:2018-03-24 17:10:26

标签: android kotlin broadcastreceiver

在这段代码中,我尝试在BroadcastReceiver中显示两次吐司。第一个没有问题,以前我创建了一个活动,但第二个没有问题,吐司没有显示。问题是什么?如何在没有活动的情况下举杯祝酒?问题可能是,如果刚出现祝酒后,应用程序结束了吐司没有出现?

    class MyReceiver : BroadcastReceiver() {
    val PREFS_NAME = "MyPrefsFile"

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

        if (intent.action.equals(Intent.ACTION_USER_PRESENT)) { //when unlock

            val settings = context.getSharedPreferences(PREFS_NAME, 0)
            var veces = settings.getInt("veces", 0)
            val limite = settings.getInt("limite", 3)
            veces++
            val editor = settings.edit()
            editor.putInt("veces", veces)

            editor.apply()
            if (veces % limite == 0) {   //
                val intent1 = Intent(context, MainActivity::class.java)
                intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                context.startActivity(intent1)
                Toast.makeText(context, "Veces $veces", Toast.LENGTH_LONG).show()   //works
            } else {
                Toast.makeText(context, "Veces $veces", Toast.LENGTH_LONG).show()  //It doesn't work
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为这不是最好的解决方案,但我已经通过创建第二个透明活动实现了我想做的事情,并且我在这个透明活动中展示吐司。我想知道是否有可能从BroadcasReceiver展示吐司,没有创建活动。