2013-10-04 10 views
1

如何通過數據廣播接收器使用sendTextMessage() 當我已經使用intent.putExtra("key","value");並且當onReceive函數調用的intent.getStringExtra("key")值爲到廣播接收機。傳數據使用sendTextMessage()

我該怎麼辦?請幫忙。

注意:當使用sendBroadcast(new Intent(smsSent).putExtra("key","value"));時,的值通過

Activity.java

void send_sms(){ 
String smsSent = "SMS_SENT"; 
String smsDelivered = "SMS_DELIVERED"; 
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
new Intent(smsSent).putExtra("key1", "value1"), 0); 
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
new Intent(smsDelivered).putExtra("key2", "value2"), 0); 

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage("5556", null, "hi", sentPI, deliveredPI); 
} 

MyReceiver.java

public class MyReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 

Log.i("my receiver"," "+intent.getAction());// this statement works fine 
Log.i("my receiver"," "+intent.getStringExtra("key1"));// null is returned 
} 

的manifest.xml

<receiver android:name=".MyReceiver"> 
<intent-filter> 
    <action android:name="SMS_SENT" /> 
    <action android:name="SMS_DELIVERED" /> 
    </intent-filter> 
</receiver> 

回答

0

編輯:

我認爲日問題可能是,你沒有提到你的軟件包。在您的清單 試試這個:

<intent-filter> 
    <action android:name="your.package.name.SMS_DELIVERED" /> 
</intent-filter> 

,這在你的代碼:

String smsDelivered = "your.package.name.SMS_DELIVERED"; 

與你的包名稱替換your.package.name! 希望幫助:)

+0

即時對不起,檢查編輯問題,這不是一個打字錯誤。 thanx – Yousif

+0

@GODOFWAR檢查我編輯的答案 – Daniel

+0

非常好的兄弟。謝謝:) – Yousif