Java 如何在android中检查事件的更新?

Java 如何在android中检查事件的更新?,java,android,Java,Android,我的应用程序有以下模块 收集用户的CB位置代码 要将其保存在用户选择的数据库中,例如,我的CB代码是465783,我可以将其保存为数据库中的“学院” 为了提供报警功能,在这个模块中,我可以输入一个文本,比如说我将其作为“学院”,当小区广播更新时,如果学院值与报警值匹配,则发出报警 现在,在我下面的代码中,我已经实现了前两个模块以及所需的数据库条目、数据库搜索等,我无法读取更新的CB位置值 public class Alarm extends MainActivity { public Stri

我的应用程序有以下模块

  • 收集用户的CB位置代码
  • 要将其保存在用户选择的数据库中,例如,我的CB代码是465783,我可以将其保存为数据库中的“学院”
  • 为了提供报警功能,在这个模块中,我可以输入一个文本,比如说我将其作为“学院”,当小区广播更新时,如果学院值与报警值匹配,则发出报警
  • 现在,在我下面的代码中,我已经实现了前两个模块以及所需的数据库条目、数据库搜索等,我无法读取更新的CB位置值

    public class Alarm extends MainActivity {
    
    public String str;
    
    public void onReceive(Context context, Intent intent) {
        //---get the CB message passed in---
        Bundle bundle = intent.getExtras();        
        SmsCbMessage[] msgs = null;
        str = "";            
        if (bundle != null)  {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsCbMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++) {
                msgs[i] = SmsCbMessage.createFromPdu((byte[])pdus[i]);                
                str += "CB " + msgs[i].getGeographicalScope() + msgs[i].getMessageCode() + msgs[i].getMessageIdentifier() + msgs[i].getUpdateNumber();                     
                str += " :";
                str += "\n";        
            }
            }
            }
    
    
    EditText user_value;
    Button startalarm;
    Button stopalarm;
    
    
    /** Called when the activity is first created. */
    @Override
     public void onCreate(Bundle savedInstanceState) 
    {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.third);
    
     startalarm = (Button) findViewById(R.id.startalarm);
     stopalarm = (Button) findViewById(R.id.stopalarm);
    user_value = (EditText) findViewById(R.id.user_value);
    
    final Ringtone ringtone;
    ringtone = RingtoneManager.getRingtone(getBaseContext(),     RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE));
    
    startalarm.setOnClickListener(new View.OnClickListener() 
    {
    
    public void onClick(View arg0)
    {
            // TODO Auto-generated method stub
    if(user_value.length()==0)
    {
        Toast.makeText(getBaseContext(), "Please enter a value.", Toast.LENGTH_LONG).show();
    }
    
        Toast.makeText(getApplicationContext(), "alarm set", Toast.LENGTH_LONG).show();
    
    //I want my alarm event to be started from here whenever a new CB sms arrives.
    
    SQLiteDatabase aa = openOrCreateDatabase("MLIdata", MODE_WORLD_READABLE, null);
        Cursor c = aa.rawQuery("SELECT CblocationName FROM MLITable WHERE CblocationCode = '"+str+"'", null);
        c.moveToFirst();
        c.getString(c.getColumnIndex("CblocationName"));
        String sas = user_value.getText().toString();
        if(sas.equals(c.getString(c.getColumnIndex("CblocationName"))))
        {
            //here comes the alarm code
    
    
            if(ringtone == null)
            {
                Log.d("Debug", "ringtone is null");
            }
            else
            {
                ringtone.play();
    
            }
        }
    }
    
    
    });
    
    stopalarm.setOnClickListener(new View.OnClickListener() {
    
    public void onClick(View v) {
        // TODO Auto-generated method stub
        ringtone.stop();
    }
    });
    }
    }
    
    公共类报警扩展活动{
    公共字符串str;
    公共void onReceive(上下文、意图){
    //---获取传入的CB消息---
    Bundle=intent.getExtras();
    SmsCbMessage[]msgs=null;
    str=“”;
    if(bundle!=null){
    //---检索收到的SMS消息---
    Object[]pdus=(Object[])bundle.get(“pdus”);
    msgs=新的SmsCbMessage[pdus.length];
    对于(int i=0;i
    
  • 从塔台更换时的接收者开始活动。使用意图从接收者开始活动。 Ex:请参考此报警示例了解上述要点

  • 在Android Manifest.xml中注册接收者

  • 从receiver类发送广播消息,同时更新接收器中的DB
  • 在您的活动中捕获相同的内容。您可以为此使用自定义广播
  • 现在激活活动中的闹钟

  • 希望这些步骤能对您有所帮助。请参考我提到的示例。

    您是否注册了接收器类以捕获自定义广播?是的,我在我的小部件中使用过它,但现在我知道如何在我的应用程序中使用它。该链接只是一个参考。我添加了我的widgetreceiver类。
    public class CbReceiver extends BroadcastReceiver
        {
    
    
            public void onReceive(Context context, Intent intent) {
                //---get the CB message passed in---
                Bundle bundle = intent.getExtras();        
                SmsCbMessage[] msgs = null;
                String str = "";            
                if (bundle != null)  {
                    //---retrieve the SMS message received---
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsCbMessage[pdus.length];            
                    for (int i=0; i<msgs.length; i++) {
                        msgs[i] = SmsCbMessage.createFromPdu((byte[])pdus[i]);                
                        str += "CB " + msgs[i].getGeographicalScope() + msgs[i].getMessageCode() + msgs[i].getMessageIdentifier() + msgs[i].getUpdateNumber();                     
                        str += " :";
                        str += msgs[i].getMessageBody().toString();
                        str += "\n";       
    
                    abortBroadcast();
                    Toast.makeText(context, str, Toast.LENGTH_LONG).show();
    
                        AppWidgetManager appWidgetManager =     AppWidgetManager.getInstance(context);
                RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget);
                ComponentName thisWidget = new ComponentName(context,MyWidget.class);
                remoteViews.setTextViewText(R.id.update,str);
                appWidgetManager.updateAppWidget(thisWidget, remoteViews);
    
            }                         
        }}
    }