android中的广播接收机

android中的广播接收机,android,sms,Android,Sms,我正在创建一个应用程序,它接收和解析SMS,然后将数据发送到另一个类 所以,为此,我创建了一个广播接收器,但问题是,在接收和解析SMS之后,我无法呼叫我必须发送数据的类 有人知道如何实现SMS接收器,并在收到SMS后解析它并将数据发送到另一个扩展到activity的类吗 接收人: public class SmsReceiver extends BroadcastReceiver { int flag1=0,flag2=0,xyz=0; public String data =

我正在创建一个应用程序,它接收和解析SMS,然后将数据发送到另一个类

所以,为此,我创建了一个广播接收器,但问题是,在接收和解析SMS之后,我无法呼叫我必须发送数据的类

有人知道如何实现SMS接收器,并在收到SMS后解析它并将数据发送到另一个扩展到activity的类吗

接收人:

public class SmsReceiver extends BroadcastReceiver
{
    int flag1=0,flag2=0,xyz=0;
    public String data = "",Lat="", Long="";
    SmsMessage[] msgs = null; 
    Bundle bundle; 
    Context con;

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        con = context;

        //---get the SMS message passed in---

        bundle = intent.getExtras();               

        if (bundle != null)
        {
            //---retrieve the SMS message received---
           /* Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];    

            for (int i=0; i<msgs.length; i++)
            {
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
                //data += "SMS from " + msgs[i].getOriginatingAddress();                     
                //data += " :";
                data += msgs[i].getMessageBody().toString();
                //data += "\n";        


            }*/

            data = "Lalazar Ave Hayatabad Pakistan;lat:33.978410 long:71.430398,T:2011-02-25\n19:37,speed:0";
            //---display the new SMS message---
            Toast.makeText(context, data, Toast.LENGTH_SHORT).show();
            Exract_Langitude_And_Latitude();

        }                        
    }


    public void Exract_Langitude_And_Latitude()
    {
        Toast.makeText(con, "Getting Latitude & Longitude", Toast.LENGTH_SHORT).show();

        for ( int i = 0; i < data.length(); ++i )
         {
              char c = data.charAt(i); 
              String s = Character.toString(c);

              ///finding latitude
              if (s.equals(";"))
              {
                Toast.makeText(con, "Getting Latitude", Toast.LENGTH_SHORT).show(); 
                flag1=1;
                String str="";
                str = data;

                for (int  j= i+5;j<str.length();j++)  
                {
                char ch = str.charAt(j);
                String l = Character.toString(ch);  
                Lat+=l;

                int k = j+6;

                char ch1 = str.charAt(k);
                String m = Character.toString(ch1);

                if (m.equals(":"))
                {
                xyz = k;    
                break;  
                }

                }

                Toast.makeText(con, "Latitude = "+ Lat, Toast.LENGTH_SHORT).show();
              }


              ///finding longitude
              if (s.equals(":") && i == xyz )
              {
                Toast.makeText(con, "Getting Longitude", Toast.LENGTH_SHORT).show(); 
                flag2=1;
                //System.out.println("found at i = "+i);  
                String str="";
                str = data;

                for (int j = i+1;j<str.length();j++)  
                {
                char ch = str.charAt(j);  
                String l = Character.toString(ch);  
                Long+=l;

                int k = j+1;
                char ch1 = str.charAt(k);
                String m = Character.toString(ch1); 
                if (m.equals(","))
                break;      
                }

                Toast.makeText(con, "Longitude = " + Long, Toast.LENGTH_SHORT).show();
              }

              if (flag1==1 && flag2==1)
              {
                 Toast.makeText(con, "Forget You", Toast.LENGTH_SHORT).show();       
                // Intent serviceIntent = new Intent().setClassName(con, Post.class.getName());
                 //con.startService(serviceIntent);
                 //con.startActivity(serviceIntent);                 

                /* Intent in = new Intent(SmsReceiver.this,Post.class);
                 in.startActivity();*/
             break; 
              }
         }///end of main for loop
    }  
}
穆达萨

假设您打算从
BroadcastReceiver
启动
smsMessaging
,则需要执行以下操作:

Intent i = new Intent(con, smsMessaging.class);
con.startActivity(i);
如果您需要将任何信息发送到
SMS信息活动
。在调用
startActivity(i)
之前,可以使用
i.putExtra()


您还必须确保已将
smsMessaging活动
添加到AndroidManifest.xml中

为什么不能调用该类?你能告诉我们你尝试在哪里开始新活动的代码吗?你能告诉我如何在这里发布代码吗?因为我是新来的,不知道你会想编辑你的原始问题并添加它,如果你的格式不太正确,我可以编辑你的帖子并修改格式。谢谢:)我已经在上面发布了,现在有什么问题吗?没有,它不起作用,这是我评论的:(它不起作用,显示问题)“方法开始(意图)未定义SmsReceiver类型的“createmethod startActivity(intent)”仍然是相同的错误SMSReceiverah类型的方法startActivity(intent)未定义!请尝试
con.startActivity(i);
抱歉><忘记您在
广播接收器中
是否有logcat输出?它可能正在启动新活动,然后立即崩溃。
Intent i = new Intent(con, smsMessaging.class);
con.startActivity(i);