2011-02-11 21 views
11

我正在開發一個android應用程序,因爲我想在不知道用戶的情況下閱讀傳入消息。我希望始終在後臺運行傳入消息檢查程序。如果收到新消息意味着我想要讀取消息的內容並且該郵件包含一些字(密碼)意味着我要激活的應用如何在Android中使用後臺服務讀取傳入消息?

請解釋我如何做,與示例代碼,因爲我是新到Android

回答

21

看看BroadCastReceivers您必須實現並註冊一個接收器android.provider.Telephony.SMS_RECEIVED

這裏是一個代碼片段,它可以讓你讀取消息,因爲他們arr我有。

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 SMSReceiver extends BroadcastReceiver 
{ 
    public void onReceive(Context context, Intent intent) 
    { 
     Bundle myBundle = intent.getExtras(); 
     SmsMessage [] messages = null; 
     String strMessage = ""; 

     if (myBundle != null) 
     { 
      Object [] pdus = (Object[]) myBundle.get("pdus"); 
      messages = new SmsMessage[pdus.length]; 

      for (int i = 0; i < messages.length; i++) 
      { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       strMessage += "SMS From: " + messages[i].getOriginatingAddress(); 
       strMessage += " : "; 
       strMessage += messages[i].getMessageBody(); 
       strMessage += "\n"; 
      } 

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

在這裏,你有什麼要添加到您的AndroidManifest.xml文件:

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

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

我不認爲,你的代碼將工作作爲一種服務,這裏是同一個問題,HTTP:// stackoverflow.com/questions/9029040/how-to-run-an-android-app-in-background – 2015-09-25 10:56:59

相關問題