0

我有一个适用于短信的 Android 应用程序。当新的短信到达 Android 时,将从我的班级调用代码,即“NEW_SMS”广播接收器。如您所知,我的“sms_recieved_class”中的“onReceive”方法获取了一些上下文(来自系统)。使用意图,我的 sms 广播接收器调用另一个对 sms 数据库执行某些操作的类(最初通过“onReceive”从系统获得的上下文用于通过发送另一个广播来调用来自其他类的代码)。

另一个类与 sms 数据库一起使用,它也是一个广播接收器。它对上面提到的我的班级发送的广播做出反应。如果“弄乱”数据库出错,应用程序应显示自定义错误对话框。现在,问题来了!

自定义错误对话框代码:

public static void setUpError(Context act,String ERRMSG, StackTraceElement[] stack) {

AlertDialog.Builder builder = new AlertDialog.Builder(act);

    final StackTraceElement[] finStack = stack;
    final String errMsg=ERRMSG;
    final Context ctxFin = act;

    builder.setMessage(poruka)...setting up alert buttons...

    AlertDialog alert = builder.create();
    alert.show();

}

错误在“alert.show()”行出现。我很困惑,因为当我尝试在我的应用程序可见时显示此对话框(并将“someAct.this”作为上下文传递)一切都很好。当我尝试使用取自“broadcastReceiver.onReceive”(由系统调用)的上下文显示警报时,出现错误。我做错了什么?

PS在STOVF上搜索答案后,每次解决方案都是“不要使用getApplicationContext()”。由于电话收到新消息时调用的两个课程都不是“活动”类型,我该怎么办?

4

1 回答 1

1

首先,Dialog 需要屏幕上的活动(因此没有任何打开的活动,您无法显示 Dialog)。您可以做的是创建看起来像 Dialog 的活动。从 SO检查这个问题。

于 2012-05-19T18:38:06.090 回答