Java Android sendBroadcast内置广播中断应用程序
我有一个Java Android sendBroadcast内置广播中断应用程序,java,android,crash,broadcastreceiver,broadcast,Java,Android,Crash,Broadcastreceiver,Broadcast,我有一个BroadcastListener,它检查输入短信并对其进行处理,以获得报警系统的潜在状态 如果文本符合我的条件和前台应用程序的活动,我希望在GUI中显示活动的状态 为此,我尝试使用如下意图: public class SmsReader extends BroadcastReceiver implements Runnable { private static final String LOG_TAG = "SMSReceiver"; private String al
BroadcastListener
,它检查输入短信并对其进行处理,以获得报警系统的潜在状态
如果文本符合我的条件和前台应用程序的活动,我希望在GUI中显示活动的状态
为此,我尝试使用如下意图:
public class SmsReader extends BroadcastReceiver implements Runnable
{
private static final String LOG_TAG = "SMSReceiver";
private String alarm = "15555215554";
public static final String INCOMING_SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
public static final String ALARM_STATUS_ON_FULL = "moorehojer.alarmcontrol.intent.action.ALARM_STATUS_FULL_ON";
public static final String ALARM_STATUS_ON_PART = "moorehojer.alarmcontrol.intent.action.ALARM_STATUS_PART_ON";
public static final String ALARM_STATUS_OFF = "moorehojer.alarmcontrol.intent.action.ALARM_STATUS_OFF";
@Override
public void onReceive(Context _context, Intent intent)
{
String intentActionToCall = "";
if (intent.getAction().equals(INCOMING_SMS_ACTION))
{
//this stops notifications to others
this.abortBroadcast();
boolean releaseBroadcast = false;
try
{
Bundle myBundle = intent.getExtras();
SmsMessage [] messages = null;
if (myBundle != null)
{
Object [] pdus = (Object[]) myBundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if(!Util.UnifyPhoneNumberPrefix(messages[i].getOriginatingAddress()).equals(Util.UnifyPhoneNumberPrefix(this.alarm)))
{
releaseBroadcast = true;
}
else
{
if(messages[i].getMessageBody().substring(0, 5).equals("FS-C "))
{
boolean frakoblet01 = messages[i].getMessageBody().contains("FRAKOBLET1");
boolean frakoblet02 = messages[i].getMessageBody().contains("FRAKOBLET2");
boolean tilkoblet01 = messages[i].getMessageBody().contains("TILKOBLET1");
boolean tilkoblet02 = messages[i].getMessageBody().contains("TILKOBLET2");
boolean deltilkoblet01 = messages[i].getMessageBody().contains("DELTILKOBLET1");
boolean deltilkoblet02 = messages[i].getMessageBody().contains("DELTILKOBLET2");
if(deltilkoblet01 || deltilkoblet02)
{
intentActionToCall = SmsReader.ALARM_STATUS_ON_PART;
}
else if(tilkoblet01 && tilkoblet02)
{
intentActionToCall = SmsReader.ALARM_STATUS_ON_FULL;
}
else if(frakoblet01 && frakoblet02)
{
intentActionToCall = SmsReader.ALARM_STATUS_OFF;
}
else
{
releaseBroadcast = true;
}
}
}
}
}
}
catch(Exception e)
{
this.makeToast(_context, "Ex 1: "+e.toString());
}
/**/
try
{
if(releaseBroadcast)
{
this.clearAbortBroadcast();
}
}
catch (Exception e)
{
this.makeToast(_context, e.toString());
}
}
if(!intentActionToCall.equals(""))
{
Intent myIntent = new Intent(intentActionToCall);
this.makeToast(_context, "Intent created:\n"+intentActionToCall);
this.makeToast(_context, "Trying broadcast");
myIntent.putExtra("message", "Hallelujah");
try
{
_context.sendBroadcast(myIntent);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
private void makeToast(Context context, String message)
{
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
public void run() {
// TODO Auto-generated method stub
}
}
操作系统会显示一条消息,表示进程已意外停止工作,并在try-catch介入时关闭
我已尝试删除该行,代码运行到最后没有问题。您可以发布logcat回溯吗?我如何访问(模拟器)请查看
_context.sendBroadcast(myIntent);