3

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

4

3 回答 3

7

创建一个活动,使用Theme.Dialog,然后调用startActivity()打开它。虽然您不能使用“真实的” Dialog,但您可以创建一个看起来像Dialog.

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

于 2010-09-12T11:24:08.490 回答
0

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

替代方式您可以打开 Activity 之类的对话框。完整示例:

  1. 我的接收者.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. 对话活动.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 
       }
     }
    
于 2020-04-09T09:29:01.643 回答
0

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

点击这里

于 2016-12-14T08:15:34.627 回答