在android中显示来自sms接收器的对话框

在android中显示来自sms接收器的对话框,android,dialog,Android,Dialog,我有一个smsReceiver,每当我收到一条短信时,我想触发一个弹出窗口。我的smsReceiver方法是在收到短信时触发。然后我尝试调用一个对话框 @overide //of smsreciver class public void onReceive(Context context, Intent intent){ showNotificattion(context) } private void showNotificattion(Context context){

我有一个smsReceiver,每当我收到一条短信时,我想触发一个弹出窗口。我的smsReceiver方法是在收到短信时触发。然后我尝试调用一个对话框

@overide //of smsreciver class
public void onReceive(Context context, Intent intent){
  showNotificattion(context)
}

private void showNotificattion(Context context){
        Log.d("sms","showing notification now 2");

         // Create out AlterDialog
          Builder builder = new AlertDialog.Builder(context); 
          //even tried context.getApplicationcontext()
          builder.setMessage("This will end the activity");
          builder.setCancelable(true);
          builder.setPositiveButton("I agree", new OkOnClickListener());
          builder.setNegativeButton("No, no", new CancelOnClickListener());
          AlertDialog dialog = builder.create();
          dialog.show();
}
但无论何时收到短信,我都会被跟踪

07-25 14:02:04.235: E/AndroidRuntime(17935): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
07-25 14:02:04.235: E/AndroidRuntime(17935):    at android.view.ViewRoot.setView(ViewRoot.java:566)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:179)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at android.app.Dialog.show(Dialog.java:265)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at com.example.xsms.SmsReceiver.showNotificattion(SmsReceiver.java:92)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at com.example.xsms.SmsReceiver.doTask(SmsReceiver.java:73)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at com.example.xsms.SmsReceiver.onReceive(SmsReceiver.java:44)
07-25 14:02:04.235: E/AndroidRuntime(17935):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2103)
07-25 14:02:04.235: E/AndroidRuntime(17935):    ... 10 more
如何解决这个问题?
我想将我的应用程序作为后台服务运行,对话框应该是可见的

您使用了错误的
上下文

广播接收器
服务
无法启动对话框

您应该制作一个带有对话框主题的
活动
,并使用
startActivity()



为什么onone会回答?这很傻吗?谢谢你的回答。你能举个例子说明如何从onReceive开始一项活动吗?只需创建一个正常的活动(具有该主题)并以startActivity(new Intent(YourBroadcast.this,YourActivity.class))开始;您还必须将
FLAG\u ACTIVITY\u NEW\u TASK
FLAG设置为意图从接收方启动活动。
<activity android:theme="@android:style/Theme.Dialog" />