我有一个响应 Alert 的应用程序,我真的需要在进入下一个屏幕之前显示一个带密码输入的对话框;问题是我似乎无法从广播接收器显示对话框--那么在接收到 Alert 时如何显示对话框密码输入?
我有一个响应 Alert 的应用程序,我真的需要在进入下一个屏幕之前显示一个带密码输入的对话框;问题是我似乎无法从广播接收器显示对话框--那么在接收到 Alert 时如何显示对话框密码输入?
Theme.Dialog
创建一个活动,并调用startActivity()
来打开它。虽然您不能使用“真正”的Dialog
,但可以创建一个看起来像Dialog
的UI。Notification
,然后在用户打开该Notification
时显示对话框。由于需要ActivityContext,因此无法从Receivers打开Dialog
备选方法:您可以像对话框一样打开Activity。 完整示例:
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)
}
}
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
class DialogActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dialog)
this.setFinishOnTouchOutside(true)
// 在 activity_dialog 中创建自定义对话框视图
// 或者您可以直接调用警报对话框
}
}