2013-04-08 2 views
0

강제 종료 된 SMS 수신시 앱 재시작을 시도하고 있습니다. 이것은 내 코드입니다. 앱을 다시 시작하지 않습니다. 다른 클래스로 리시버를 작성해야합니까? 매니페스트에서 :재시작 강제 종료 중 앱 수신 중

<uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <receiver android:name=".MySMSbr"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
    </receiver> 

My mainActivity onCreate() : 

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
BroadcastReceiver SMSbr; 

    public void onCreate(Bundle savedInstanceState) { 
    Toast.makeText(getApplicationContext(),"in OnCreate", Toast.LENGTH_LONG).show(); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
    SMSbr = new BroadcastReceiver() 
     { 

      @Override 
      public void onReceive(Context context,Intent intent) 
      { 
       this.abortBroadcast(); 
       Toast.makeText(context, "in onReceive", Toast.LENGTH_LONG).show(); 
       toggleLogging(AppSettings.getServiceRunning(MainActivity.this), 
         AppSettings.getLoggingInterval(MainActivity.this)); 
       this.clearAbortBroadcast(); 
      }//end of onReceive method 

      };//end of BroadcastReceiver 

      IntentFilter SMSfilter = new IntentFilter(SMS_RECEIVED); 
      this.registerReceiver(SMSbr, SMSfilter); 
    } 
    in togglelogging the service is started 
    where is it going wrong. 
+0

AFAIK, Android 3.x 이상에서 'Intent'로 강제 종료 된 앱을 다시 시작할 수 없음 –

+0

어떻게해야합니까? – Manasi

+0

다른 프로세스에서 시작된 서비스는 계속 살아 있어야합니다. –

답변

0

당신은 매니페스트에 BroadcastReceiver 선언하는 - 즉, 정적 수신기를하지만 사실은 이러한 클래스가없는 당신이 당신의 활동에 동적 수신기를 만들 수 있습니다.

당신이 실제로하고있는 일은 활동이 시작될 때 수신기를 등록하는 것이지만 다른 방법을 원합니다 (수신자가 방송을 수신하면 활동/응용 프로그램을 시작하십시오).
SMSbr extends BroadcastReceiver이라는 클래스를 만들어야 논리를 수행 할 수 있습니다.

그런 식으로 수신기를 항상 등록하게하고 SMS 브로드 캐스트가 수신되면 앱을 깨울 수 있습니다.