Приемник вещания в Android - PullRequest
       0

Приемник вещания в Android

0 голосов
/ 01 апреля 2011

Я создаю приложение, которое получает и анализирует SMS, а затем отправляет данные в другой класс.

Итак, для этого я создаю широковещательный приемник, но проблема в том, что после получения и анализа SMS я не могу позвонить своему классукому я должен отправить данные.

У кого-нибудь есть идеи, как реализовать приемник SMS, а после получения SMS разобрать его и отправить данные в другой класс, который распространяется на активность?

Получатель:

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
    }  
}

Активность:

package com.sms;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;


public class smsMessaging extends Activity {


        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);

            Intent sendIntent = new Intent(Intent.ACTION_VIEW);
            sendIntent.putExtra("sms_body", ""); 
            sendIntent.setType("vnd.android-dir/mms-sms");
            startActivity(sendIntent);

           /* SmsReceiver obj = new SmsReceiver();
            String a = obj.Lat;
            String b = obj.Long; 
            Toast.makeText(smsMessaging.this, "Latitude = "+ a +"  "+ "Longitude = "+ b, Toast.LENGTH_SHORT).show();
             */

        /* Intent intent = new Intent (this,Post.class);
         startActivity(intent);*/

        }

}

1 Ответ

2 голосов
/ 01 апреля 2011

Mudasar,

Предполагая, что вы собираетесь запустить smsMessaging с BroadcastReceiver, вы захотите сделать что-то вроде этого:

Intent i = new Intent(con, smsMessaging.class);
con.startActivity(i);

Если вам нужно отправить какую-либо информацию на smsMessaging Activity. Вы можете использовать i.putExtra() перед звонком на startActivity(i).

Вы также должны убедиться, что вы добавили smsMessaging Activity в свой AndroidManifest.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...