2017-04-06 75 views
1

是新到Android,我想開發可接收短信和處理消息的應用程序。啓動(註冊)在Andriod的啓動服務(啓動)

我已經採取了網絡上一看就怎麼收到短信和波紋管是代碼在嘗試使用。

public class SmsListener extends BroadcastReceiver { 
    String R_Message; 
    private SharedPreferences preferences; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
      Bundle bundle = intent.getExtras(); //---get the SMS message passed in--- 
      SmsMessage[] msgs = null; 
      String msg_from; 
      if (bundle != null) { 
       //---retrieve the SMS message received--- 
       try { 
        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_from = msgs[i].getOriginatingAddress(); 
         String msgBody = msgs[i].getMessageBody(); 
        } 
        return; 
       } catch (Exception e) { 
        //Log.d("Exception caught",e.getMessage()); 
        R_Message = "No message received"; 
        return; 
       } 
      } 
     } 
    } 
} 

,這裏是我發現,它可以啓動一個服務,讓我的應用程序可以在後臺工作的代碼

public class SMSService extends IntentService { 

    /** 
    * A constructor is required, and must call the super IntentService(String) 
    * constructor with a name for the worker thread. 
    */ 
    public SMSService() { 
     super("SMSService "); 
    } 
    @Override 
    protected void onHandleIntent(Intent intent) { 
     // Normally we would do some work here, like download a file. 
     // For our sample, we just sleep for 5 seconds. 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      // Restore interrupt status. 
      Thread.currentThread().interrupt(); 
     } 
    } 
} 

裁判:https://developer.android.com/guide/components/services.html

我創建的文件(S)SmsListener.java和SMSService.java清單中我有

<receiver android:name=".SmsListener"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

Permission: 

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

但我不知道怎麼稱呼上述兩個Java進程,並在那裏打電話給他們,所以我可以驗證應用程序正在接收短信和關閉,即使它會繼續。

注:我的應用程序將有哪些需要兩個服務是工作在後臺的每次請告訴我如何添加第二個服務。

任何幫助是極大學徒感謝

+1

服務被添加到清單文件中標記 –

+0

我添加了這個但我無法在服務列表中看到 – AndroidError

回答

0

我觀察服務被假設是我的活動之一內開始爲後續

  Intent intent = new Intent(this, SMSservice.class); 
      startService(intent); 

這使服務啓動成爲可能。