2012-05-03 5 views
0

내 요구 사항에 따라 들어오는 SMS를 통해 서비스를 시작/중지하고 싶습니다.안드로이드에서 수신 SMS를 통해 서비스 시작

Dinesh 아이디어 당 나는 이것을했다.

public class ReceiveSMS extends BroadcastReceiver { 

    Boolean SendSMS; 
    String Mobileno; 
    String VarMessageBody; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     String str = ""; 
     if (bundle != null) { 
      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]); 
       str += "SMS from " + msgs[i].getOriginatingAddress(); 
       Mobileno = msgs[i].getOriginatingAddress(); 
       str += " :"; 
       str += msgs[i].getMessageBody().toString(); 
       VarMessageBody = msgs[i].getMessageBody().toString(); 
       str += "\n"; 
       Mobileno = msgs[i].getOriginatingAddress(); 

      } 
      if (VarMessageBody.startsWith("START")) { 
       Intent intentHome = new Intent(context,SwitchBluetoothActivity.class); 
       intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(intentHome); 

      } 

     } 

    } 

와 나의 SwitchBluetoothActivity에 내가
public class SwitchBluetoothActivity extends Activity { 
    private TextView tv; 
    private ToggleButton tb; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     tv = (TextView) findViewById(R.id.bluetoothText); 
     tb = (ToggleButton) findViewById(R.id.toggleButton); 

     final BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter(); 

     if (bta == null) { 
      tv.setText("Device does not support Bluetooth"); 
     } 
     else if(bta.isEnabled()){ 
      tv.setText("Bluetooth is enabled"); 
      tb.setChecked(true); 
     } 
     else{ 
      tv.setText("Bluetooth is disabled"); 
      tb.setChecked(false); 
     } 

     tb.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(bta.isEnabled()){ 
        bta.disable(); 
       tv.setText("Bluetooth is disabled"); 
       } 
       else{ 
        bta.enable(); 
       tv.setText("Bluetooth is enabled"); 
       } 
      } 
     }); 
    } 
} 

을 쓴하지만 난이 활동을 시작할 수 없습니다입니다.

답변

-1

등록을 참조 중지 할 수 있습니다 프로젝트의 BroadcastReceiver 클래스는 들어오는 SMS를 듣습니다. 리얼과 방송 수신기 클래스 후 링크

http://www.androidcompetencycenter.com/2008/12/android-api-sms-handling/

아래 코드 활동 샘플 코드 아래 시작 SMS를받을 듣기 :

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

public class ReceiveSMS extends BroadcastReceiver 
{ 
    MapMarker obj_gps = new MapMarker(); 
    Boolean SendSMS; 
    String Mobileno; 
    String VarMessageBody; 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
      Bundle bundle = intent.getExtras();   
      SmsMessage[] msgs = null; 
      String str = "";    
      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]);     
        str += "SMS from " + msgs[i].getOriginatingAddress(); 
        Mobileno=msgs[i].getOriginatingAddress(); 
        str += " :"; 
        str += msgs[i].getMessageBody().toString(); 
        VarMessageBody=msgs[i].getMessageBody().toString(); 
        str += "\n"; 
        Mobileno=msgs[i].getOriginatingAddress(); 

       } 
       //---display the new SMS message--- 
       if (VarMessageBody.startsWith("START"))//Check Message Body String Start with START 
        Intent intentHome = new Intent(context, HomeScreen.class); 
        intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        //intentHome.putExtra("No",Mobileno); 
        //intentHome.putExtra("Msg",VarMessageBody); 
        //intentHome.putExtra("Mob", Mobileno); 
        context.startActivity(intentHome); 
       } 

       Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
      } 
    } 



} 

이 코드는 활동을 시작하려면 SMS 형식 "START"를 보내 수신 ..!

참고 : 시작 조건은 조건에 따라 서비스 시작 ...!

+0

유권자는 누구입니까, 내 대답은 무엇이 잘못 되었습니까? – Dinesh

+0

친애하는 Dinesh. 답변 해 주셔서 감사합니다. 좋은 답변입니다. –

+0

대단히 감사합니다 ...! – Dinesh

0

Sms 수신시 BroadcastReceiver를 등록하십시오. 당신은 서비스를 시작할 수 있습니다.

0

들어오는 sms 에 대한 방송 수신기를 사용할 수 있으며 해당 수신기에서 시작 및 중지 서비스의 논리를 SMS의 내용에 기초 할 수 있으며 장치 종료 후 다시 시작할 때 서비스 논리를 설정해야합니다. 그것을 위해 당신이 시작을위한

장치를 다시 시작의의 방송 수신기를 사용하여 서비스가이

http://developer.android.com/reference/android/app/Service.html

+0

감사합니다. 먼저 시도하겠습니다. –

관련 문제