2011-02-11 20 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

相关问题