2009-12-22 24 views
12

मैं एक साधारण एप्लिकेशन लिखने की कोशिश कर रहा हूं जो एसएमएस संदेशों को प्राप्त करने और उन्हें संभालने का प्रयास करता है। मैंने कई ट्यूटोरियल का पालन किया है लेकिन मुझे कहीं भी नहीं मिल रहा है, जब मैं एमुलेटर को एसएमएस भेजता हूं, तो इरादा कभी नहीं निकाला जाता है।एंड्रॉइड एसएमएस रिसीवर काम नहीं कर रहा

package com.neocodenetworks.smsfwd; 

import android.content.*; 
import android.os.Bundle; 
import android.telephony.*; 
import android.util.Log; 

public class SmsReciever extends BroadcastReceiver { 
    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
    private static final String TAG = "smsfwd"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "Intent recieved: " + intent.getAction()); 

     if (intent.getAction() == SMS_RECEIVED) { 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
       Object[] pdus = (Object[])bundle.get("pdus"); 
       final SmsMessage[] messages = new SmsMessage[pdus.length]; 
       for (int i = 0; i < pdus.length; i++) { 
        messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
       } 
       if (messages.length > -1) { 
        Log.i(TAG, "Message recieved: " + messages[0].getMessageBody()); 
        NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody()); 
       } 
      } 
     } 
    } 
} 

और यहाँ मेरी AndroidManifest.xml है:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.neocodenetworks.smsfwd" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 
     <receiver android:name=".SmsReciever"> 
      <intent-filter> 
       <action android:name="android.provider.telephony.SMS_RECIEVED"></action> 
      </intent-filter> 
     </receiver> 
    </application> 
    <uses-sdk android:minSdkVersion="6" /> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
</manifest> 

मैं वास्तव में क्या गलत हो रहा से कुछ मार्गदर्शन की सराहना करेंगे,

यहाँ मेरी मंशा है। मैं बस एंड्रॉइड डेवलपमेंट में जा रहा हूं लेकिन मुझे लगता है कि मेरे सिर के चारों ओर लपेटा गया है (ज्यादातर)। एमुलेटर के लॉगकैट की निगरानी करते समय, लॉग इवेंट कभी नहीं आते हैं, और डिबगिंग ब्रेकपॉइंट्स कभी हिट नहीं होते हैं, इसलिए मुझे लगता है कि यह मेरे इरादे फ़िल्टर में कहीं है।

मैं इसे एंड्रॉइड 2.0.1 पर चला रहा हूं।

+0

मैं इसी तरह यहाँ कुछ कर रहा हूँ है !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

+0

एक एसएमएस प्रसारण प्राप्त क्यों किया जा रहा है, इस बारे में अधिक सुझावों के लिए, इस पोस्ट को देखें: http://stackoverflow.com/प्रश्न/4117701/एंड्रॉइड-एसएमएस-प्रसारण-रिसीवर? rq = 1 – TheIT

उत्तर

10

Samuh's answer के अतिरिक्त (आप कार्रवाई स्ट्रिंग पर एक वस्तु तुलना करने की जरूरत है , या बस कोई तुलना नहीं करें), अपनी मेनिफेस्ट फ़ाइल में आपने SMS_RECEIVED गलत वर्तनी की है।

+1

यदि आप एडीटी के साथ ग्रहण का उपयोग कर रहे हैं, तो आप अनुमति टैब का उपयोग करके अनुमतियां जोड़कर ऐसी त्रुटियों से बच सकते हैं कि प्रकटकर्ता स्वयं उन्हें टाइप करने के बजाय प्रदान करता है। – Samuh

+0

जबकि समूह सही है, तथ्य यह है कि मैंने गलत वर्तनी की थी जो इसे काम करने से रोक रहा था। धन्यवाद! – Jess

10

मुझे लगता है कि आपका मैनिफेस्ट ठीक दिखता है;

if (intent.getAction() == SMS_RECEIVED) { 

मुझे लगता है कि यह होना चाहिए: समस्या लाइन के साथ है intent.getAction().equals(ACTION)

आशा है कि मदद करता है ..

-1

चूंकि टेलीफ़ोनी बहिष्कृत है (1.0 से मुझे लगता है), यह विधि अब और काम नहीं करती है। इस ट्यूटोरियल की जाँच करें अगर आप एक उचित समाधान की जरूरत है: http://mobiforge.com/developing/story/sms-messaging-android

+0

न केवल जिस पद्धति को मैंने लिखा है, वह अभी भी 2.1 पर काम करता है, यह आपके पोस्ट में जुड़े आलेख के समान है, और यह प्रश्न मैंने अपने प्रश्न से पहले लिखा था। लोगों को आजमाएं और भ्रमित न करें। – Jess

+0

यह android.telephony.gsm.SmsMessage है जो बहिष्कृत है: http://developer.android।कॉम/संदर्भ/एंड्रॉइड/टेलीफोनी/जीएसएम/एसएमएसएमसेज.html android.telephony.SmsMessage वास्तव में, 2.2 तक तक ठीक काम करता है। दिलचस्प, क्रिस्टोफ का लिंक वास्तव में एंड्रॉइड.telephony.gsm.SmsManager का संदर्भ देता है, जिसे भी बहिष्कृत किया जाता है। – mbafford

+0

यह अभी भी अपरिवर्तित और अभी भी ठीक काम कर रहा है, संस्करण 6.0 (7.0 आ रहा है) और 2016 के अंत में :) – Bruce

1

कार्रवाई का नाम एक राजधानी "टी की आवश्यकता होती है लगता है (बस, के बाद से मैं ट्यूटोरियल की एक बहुत कुछ है कि अब और काम नहीं करते पर ठोकर खाई इस नोट करने के लिए करना चाहता था) "में" टेलीफोनी।

android.provider.Telephony.SMS_RECEIVED

1

String चर के लिए आप == प्रतीक के साथ तुलना नहीं करनी चाहिए, आप equals() विधि

साथ तुलना करनी चाहिए यह गलत है

intent.getAction() == SMS_RECEIVED) 

यह सही

intent.getAction().equals (SMS_RECEIVED)) 
संबंधित मुद्दे