2011-06-16 65 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

相關問題