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

3

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

3个回答

7
使用Theme.Dialog创建一个活动,并调用startActivity()来打开它。虽然您不能使用“真正”的Dialog,但可以创建一个看起来像Dialog的UI。
请注意,基于广播弹出活动可能会极大地激怒某些用户,他们可能不喜欢在他们的游戏或短信会话等中间出现对话框。您可能希望考虑实际上发出一个Notification,然后在用户打开该Notification时显示对话框。

嘿,马克-谢谢你的信息-我可能会转用你的wakelock代码 - 上周买了你所有的pdf书籍 - 伟大的书;只是新接触安卓。对于这个应用程序来说,这有点必要,所以可能是用户同意的事情...除此之外,我正在运行一个带有“while”线程的对话框,在其中运行进度条,但我会在另一个问题中询问。 - grimmwerks
请问您能否考虑接受那些真正回答了您问题的答案,比如这个答案呢?谢谢。 - PureSpider

0

请点击下面的链接,这是一个完整的示例,演示如何制作自定义对话框并在网络断开时自动调用它并弹出。希望对您有所帮助。

请点击此处


0

由于需要ActivityContext,因此无法从Receivers打开Dialog

备选方法:您可以像对话框一样打开Activity。 完整示例:

  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)
    
         // 在 activity_dialog 中创建自定义对话框视图
         // 或者您可以直接调用警报对话框
       }
     }
    

请不要使用特别大的字体来让你的回答看起来奇怪。 - CopsOnRoad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接