使用服务的传入文本消息的通知

时间:2013-12-20 12:29:59

标签: android service notifications

我对自己的问题感到震惊。实际上我想要做的是创建一个通知服务,即使用户不在应用程序中也能提供用户警报。该服务应每5分钟检查一次收到的消息。通知应与通知抽屉中的通知收件箱样式完全相同。我需要通过单击通知来调用特定活动。谁能建议我怎么做?谢谢你的帮助....

1 个答案:

答案 0 :(得分:0)

首先,您需要获得接收和读取短信的权限。您可以使用以下代码在androidManifest.xml中执行此操作: -

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.sms"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

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

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <receiver android:name=".SMSBroadcastReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>

</application></manifest>

然后,您需要将BroadcastReceiver设置为接收传入SMS的通知。

public class SMSBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    SmsMessage[] msgs = null;
    String str = "no message received";
    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 Phone No: " +msgs[i].getOriginatingAddress();
            str +="\n"+"Message is: ";
            str += msgs[i].getMessageBody().toString();
            str +="\n";
        }

        Log.v("Debug", str);
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    }
}}

以上代码将为您提供短信发件人的联系电话和收到的信息。