我正在构建一个需要连接到MQTT服务器的应用程序。一切正常,但我想让它失败证明。更具体地说,我需要在服务无法连接到MQTT服务器时,应用程序关闭,因为它无法执行任何操作。我试图向活动广播一个意图,但广播在捕获异常后没有达到它。 (为了便于理解,我省略了一些代码)
服务的onHandleIntent()
try{
mqttClient.connect();
} catch (MqttException e) {
Intent msgint = new Intent();
msgint.setAction(constantStrings.SH_CONN_ERROR);
sendBroadcast(msgint);
Log.d("MqttLog","ERROR-MqttException " + e.getMessage());
}
我需要完成的活动(SelectionGrid.class)
@Override
protected void onCreate(Bundle savedInstanceState) {
[...]
IntentFilter filter = new IntentFilter();
filter.addAction(constantStrings.SH_CONNERROR);
registerReceiver(SH_Communication, filter);
}
BroadcastReceiver SH_Communication = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(constantStrings.SH_CONN_ERROR)){
new AlertDialog.Builder(getApplicationContext())
.setTitle("Error")
.setMessage("No conection")
.setCancelable(false)
.setPositiveButton("Close app", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SelectionGrid.this.finish();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}
};
我在捕获异常时获得了Log条目,但广播从未进入活动。 有没有更好的方法呢?
答案 0 :(得分:0)
我能够解决它。原来我说的是错误的活动,看起来很像我真正需要的活动。我在问题中展示的代码是正确的。