Как активировать приложение Android с помощью SMS от определенного отправителя SMS (определенный порт SMS) - PullRequest
1 голос
/ 04 августа 2011

Мне нужно разработать приложение для Android, которое будет получать SMS-сообщения от определенного отправителя. Когда SMS-сообщение получено, приложение должно активироваться и получить все значения, которые пришли с SMS-сообщением, пожалуйста, дайте мне ответ?

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Вы можете использовать BroadcastReciver для чтения смс.И извлечь это смс и сохранить значения в базе данных в Android.Когда вы вызываете первую проверку активности, определенное значение содержится в базе данных, а затем только запускайте операцию.

 public class ReadingMessage extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras(); 
    DBAdapter dbHelper = new DBAdapter(context);
    SmsMessage[] msgs = null;
    String msg=null;
    String str=null;
    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]);                

            msg = msgs[i].getMessageBody().toString();
            str =msg.toUpperCase();        


            if(str.contains("your value"))
            {
            try{
                dbHelper.open();

                dbHelper.insertinfo(msg);                   

                dbHelper.close();

            }
            catch(Exception e)
            {
                e.toString();
            }

            }

        }
           }  
  }

}

Этот код для чтения SMS.

 public class StartActivity extends Activity{

    private static final int ACTIVITY_REGISTRATION1=0;
    private static final int ACTIVITY_SENDALERT3=1;
    private static final int ACTIVITY_REGISTRATION2 = 2;

      Context context;
      DBAdapter dbHelper=null;
      Intent intent;
      String db_activation=null;
      Cursor cursor;

  public StartActivity()
  {
      this.context=this;
  }

@Override

/* Method Header
 * Method Name      : onCreate
 * Input Parameter  : Bundle
 * Return Value     : nil
 */
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

     dbHelper=new DBAdapter(this);

     try
     {
     dbHelper.open();

     cursor = dbHelper.getActivtaion();
     if(cursor.getCount()==0)
     {

        intent=new Intent(this,Registration.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
        startActivityForResult(intent,ACTIVITY_REGISTRATION1);
     }
     else
     {
        for(int i=0;i<cursor.getCount();i++)
        {
            cursor.moveToNext();
            db_activation = cursor.getString(cursor.getColumnIndex(DBAdapter.KEY_ACTIVATION));

     if(db_activation.equals("1"))

     {


        intent=new Intent(this,SendAlert.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
        startActivityForResult(intent,ACTIVITY_SENDALERT3);



     }
    else
    {

        intent=new Intent(this,Registration.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
        startActivityForResult(intent,ACTIVITY_REGISTRATION2);
    }

     dbHelper.close();
}
     }
     }
catch(Exception e)
{
finish();
System.exit(0);
   e.toString();
}
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    finish();

}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
     if (resultCode == Activity.RESULT_OK)
     finish();
    }
  }

этот код для первого действия

  public long insertTruckinfo(String db_Truckmsg)
    {
    ContentValues cVal=new ContentValues();

    cVal.put(KEY_INFO,db_Truckmsg);


    return db.insert(TRUCKINFO_TABLE, null,cVal);

}


public Cursor getActivtaion()
{
     Cursor cursor =db.query(ACTIVATION_TABLE, new String[] {KEY_ID,KEY_ACTIVATION}, null,null, null, null, null);
     return cursor;
}


public Cursor getTruckinfo()
{
     Cursor cursor =db.query(TRUCKINFO_TABLE, new String[] {KEY_ID,KEY_INFO}, null,null, null, null, null);
     return cursor;
}

Это класс DataBase.

Я думаю, что это полезно для тебя ....

1 голос
/ 04 августа 2011

Используйте широковещательный приемник для захвата всех входящих сообщений.Однако, где, когда и как вы инициализируете свой приемник, зависит от вашего приложения.Вы можете сделать это при загрузке или при первом открытии приложения и т. Д.

Вам нужно будет отсканировать все входящие смс, прочитать содержимое и номер, а также проверить и установить флаг где-нибудь внутри вашего приложения.

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