Android广播接收器显示对话框?

时间:2010-09-12 02:43:33

标签: android dialog broadcastreceiver

我有一个响应警报的应用程序 - 我真的需要在进入下一个屏幕之前显示一个带密码输入的警报;问题是我似乎无法从广播接收器显示对话框 - 所以如何在收到警报时显示对话框密码?

3 个答案:

答案 0 :(得分:7)

使用Theme.Dialog创建活动,然后致电startActivity()将其打开。虽然您无法使用“真实”Dialog,但您可以创建一个看起来像Dialog的用户界面。

请记住,基于广播弹出活动可能会极大地激怒一些用户,他们可能不会欣赏您在游戏或短信对话中出现的对话或其他任何内容。您可能希望考虑实际提出Notification,然后在打开Notification时显示对话框。

答案 1 :(得分:0)

通过下面的链接,这是完整的示例,如何制作自定义对话框并自动调用它,并在互联网停止时弹出,希望它适合您

点击Here

答案 2 :(得分:0)

您无法从Receivers打开Dialog,因为它需要ActivityContext

替代方法您可以打开“类似活动性”对话框。完整示例:

  1. MyReceiver.kt

    class AlarmReceiver : BroadcastReceiver {
      private val REMINDER_BUNDLE = "MyReminderBundle"
    
      override fun onReceive(context: Context?, intent: Intent?) {
        val mIntent = Intent(context, DialogActivity::class.java)
        mIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        context?.startActivity(mIntent)
      }
    }
    
  2. AndroidManife.xml

    <activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>

  3. DialogActivity.kt

    class DialogActivity : AppCompatActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dialog)
        this.setFinishOnTouchOutside(true)
    
        //  create custom view of your dialog  in activity_dialog
        // or you can direct call alert dialog 
      }
    }