我有一个可以处理sms消息的Android应用程序。当新的短信到达Android时,将从我的班级调用“NEW_SMS”广播接收器的代码。如您所知,我的“sms_recieved_class”中的“onReceive”方法获得了一些上下文(来自系统)。使用意图,我的短信广播接收器调用另一个与sms数据库做某事的类(最初通过“onReceive”从系统获得的上下文用于通过发送另一个广播从其他类调用代码)。
其他类使用sms数据库,它也是广播接收器。它对我上面提到的班级发送的广播作出反应。如果“弄乱”数据库出错,app应显示自定义错误对话框。现在,问题就出现了!
自定义错误对话框代码:
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”(由系统调用)获取的Context显示警报时,我收到错误。我做错了什么?
P.S。在每次解决方案是“不使用getApplicationContext()”之后,在STOVF上搜索答案之后。由于我的两个在手机上收到新消息时调用的类都不是“活动”类型,我该怎么办?