मैं एक Android App से एसएमएस संदेश भेजने के लिए कोशिश कर रहा हूँ। मैं लंबित इंटेंट का उपयोग कर रहा हूं ताकि मैं ब्रॉडकास्ट रिसीवर का उपयोग यह जांचने के लिए कर सकूं कि यह ठीक से भेजा गया था या नहीं। चूंकि SendTextMessage कॉल प्रति एसएमएस किया जाएगा, मुझे वास्तविक एसएमएस की पहचान करने के लिए कुछ "अतिरिक्त" डेटा भेजने की आवश्यकता है, ताकि मेरा प्रसारण प्राप्त एक विशिष्ट एसएमएस संदेश पर कुछ काम कर सके।एंड्रॉयड PendingIntent अतिरिक्त
यहाँहै मेरी भेजने कोड:
String SENT = "SMS_SENT";
Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("foo", "BAR");
PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(baseContext, 0,
new Intent(DELIVERED), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI);
समस्या यह है कि मेरे प्रसारण रिसीवर में, यह मेरी अतिरिक्त "foo" को पढ़ने के लिए नहीं कर पा रहे:
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}
SMSID सिर्फ अशक्त हो जाता है ।
मेरे प्रसारण रिसीवर इसलिए की तरह पंजीकृत है:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));
यह देखते हुए कि लक्ष्य फ़िल्टर काम कर रहा है, मैं गलत क्या कर रहा हूँ? एक्स्ट्रा भी क्यों नहीं भेजे जाते हैं?
किसी भी मदद की सराहना की है। धन्यवाद
अपने PendingIntent.getBroadcast में, यदि आप कुछ अद्वितीय अनुरोध कोड गुजरती हैं, SMSID अभी भी रिक्त है? (उदाहरण के लिए, 'लंबित INTent.getBroadcast (बेसकॉन्टेक्स्ट, 99, भेजा गया, 0) ' – dule
उत्कृष्ट! वह काम किया। यदि आप इसे उत्तर के रूप में रखते हैं, तो मैं स्वीकार करूंगा :) हालांकि, आपको एक अद्वितीय अनुरोध कोड क्यों चाहिए? इससे पहले, मैं बस इसे 0 पर सेट कर रहा था जो ऐसा प्रतीत नहीं होता था। – jtnire