2011-06-16 35 views
1

我使用BroadcastReceiver类来接收短信。我的主类的代码是:如何在应用程序收到短信之后再调用一项活动?

package org.apache.sms; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 


public class SMSApp 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(); 
     /* 
     Intent i = new Intent(context,Second.class); 
     i.putExtra("msg",str); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
     */ 

    } 
    this.abortBroadcast(); 
} 

}

清单文件是:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="org.apache.sms" android:versionCode="1" 
android:versionName="1.0.0"> 
<uses-sdk android:minSdkVersion="8" /> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver android:name=".SMSApp"> 
     <intent-filter android:priority="100"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

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

现在我的应用程序将在弹出显示消息。

但我想显示第二个屏幕,当我的应用程序收到短信。为此,我已经Toast.makeText方法后添加下面的代码:

Intent i = new Intent(context,Second.class); 
     i.putExtra("msg",str); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 

添加以下代码后没有正在发生的事情。通知栏中没有错误消息。

+0

可以发布您的更新代码吗? – ingsaurabh 2011-06-16 07:26:16

+0

感谢saurabh回复我已添加我的更新代码 – 2011-06-16 07:31:45

回答

4

也许你应该在manifest文件中添加'Second'Activity?

+1

是的,这是原因。 – 2011-06-16 08:56:04

+0

感谢像素&jn0101它是由于清单文件中缺少的活动标记(第二个)。添加了 标记并解决了问题。 – 2011-06-16 12:03:34

相关问题