收到短信时为什么没有调用活动?

时间:2012-10-29 17:05:03

标签: android-intent

我正在使用SMSReceiver类来接收短信。我的主要类代码是:

package com.example.receivertest;

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
{
 @Override
   public void onReceive(Context context, Intent intent) 
   {
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();        
SmsMessage[] msgs = null;
String str = "";            
if (bundle != null)
{
    //---retrieve the SMS message received---
    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 " + msgs[i].getOriginatingAddress();                     
        str += " :";
        str += msgs[i].getMessageBody().toString();
        str += "\n";        
    }
    //---display the new SMS message---
    Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

    if(str.startsWith("aaa")){
        Intent i = new Intent(context, MainActivity.class);
        i.putExtra("msg",str);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
        context.startActivity(i);
        this.abortBroadcast();
    }

}

 }

清单文件是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.receivertest"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".SMSReceiver">
    <intent-filter android:priority="100">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
</application>

</manifest>

我知道上次有人问过类似的问题。但我想知道如何在收到特定消息时调用活动。 我的问题是没有调用任何活动,只有收件箱中的传入消息。 任何人都知道它有什么问题吗?

0 个答案:

没有答案