2012-06-25 19 views
6

मैं ऐसे ऐप पर काम कर रहा हूं जिसमें आने वाले टेक्स्ट संदेशों को अवरुद्ध करने की क्षमता होगी (उपयोगकर्ता सेटिंग्स के आधार पर), लेकिन मुझे इनकमिंग संदेशों का पता लगाने में परेशानी हो रही है।इनकमिंग ग्रंथों को अवरोधित करें (एंड्रॉइड)

क्या आप मेरे कोड देख रहे हैं और मुझे बताएं कि मैं क्या गलत कर रहा हूं? मैं अन्य प्रश्नों को देख रहा हूं जो इस के समान हैं लेकिन मुझे संदर्भ के लिए विस्तृत उत्तर या पर्याप्त जानकारी के साथ कोई भी नहीं मिला है।

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

    public class SmsReceiver extends BroadcastReceiver{ 

    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null){ 
       abortBroadcast(); 
      } 
     } 
    } 

    } 

यहाँ मेरी प्रकट

<receiver android:name=".listener.SmsReceiver"> 
<intent-filter android:priority="100"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

मैंने MobiForge पर ट्यूटोरियल (http://mobiforge.com/developing/story/sms-messaging-android) और साथ ही सवाल यहाँ निम्नलिखित किया गया:

How to block an incoming message in android?

Android – Listen For Incoming SMS Messages

क्या कोई इंगित कर सकता है मुझे सही दिशा में यहाँ? मैं इसकी सराहना करता हूं।

+0

संभावित डुप्लिकेट [एंड्रॉइड में आने वाले संदेश को कैसे अवरुद्ध करें?] (Http://stackoverflow.com/questions/9378431/how-to-block-an-incoming-message-in-android) – t0mm13b

+0

मेरे पास है उस प्रश्न के उत्तरों के माध्यम से चला गया और कुछ भी उपयोगी नहीं मिला। – localhost

+0

मैंने अपने मैनिफेस्ट रिसीवर जैसे ".SmsReceiver" और ".listener.SmsReceiver" में विविधताएं आज़माएं हैं। मेरा फ़ाइल नाम "SmsReceiver.java" – localhost

उत्तर

10

मैं इनकमिंग ग्रंथों को अवरुद्ध करने के लिए उपयोग करता हूं। इस प्रकार मैंने अपने प्रश्न का उत्तर दिया।


SmsReceiver.java

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

public class BroadCastReceiver extends BroadcastReceiver 
{ 
/** Called when the activity is first created. */ 
private static final String ACTION = "android.provider.Telephony.SEND_SMS"; 
public static int MSG_TPE=0; 
public void onReceive(Context context, Intent intent) 
{ 
    String MSG_TYPE=intent.getAction(); 
     if(MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) 
    { 
//   Toast toast = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG); 
//   toast.show(); 

    Bundle bundle = intent.getExtras(); 
    Object messages[] = (Object[]) bundle.get("pdus"); 
    SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
    for (int n = 0; n < messages.length; n++) 
    { 
     smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
    } 

    // show first message 
    Toast toast = Toast.makeText(context,"BLOCKED Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG); 
    toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 
    else if(MSG_TYPE.equals("android.provider.Telephony.SEND_SMS")) 
    { 
     Toast toast = Toast.makeText(context,"SMS SENT: "+MSG_TYPE , Toast.LENGTH_LONG); 
     toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 
    else 
    { 

     Toast toast = Toast.makeText(context,"SIN ELSE: "+MSG_TYPE , Toast.LENGTH_LONG); 
     toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 

} 

} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="APP.PACKAGE.NAMEHERE" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="10" /> 

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="true" 
android:resizeable="true" 
android:anyDensity="true" /> 

<uses-feature android:name="android.hardware.telephony" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_MMS" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".APPACTIVITYHERE" 
     android:label="@string/app_name" 
     android:configChanges="orientation|keyboardHidden" > 


    <service android:name=".MyService" android:enabled="true"/> 
    <receiver android:name="SmsReceiver"> 
     <intent-filter android:priority="2147483647"> 
     <action android:name="android.provider.Telephony.SMS_SENT"/> 
     </intent-filter> 
    </receiver> 

    <service android:name=".MyServiceSentReceived" android:enabled="true"/> 
     <receiver android:name="SmsReceiver"> 
     <intent-filter android:priority="2147483645"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
     </receiver> 

</application> 

प्रकट से दूर ले करने के लिए मुख्य बात सेवा ब्लॉक, रिसीवर खंड है , और अनुमतियां।

+0

@ पीटर मेरिल .. इसे साझा करने के लिए धन्यवाद !! – swiftBoy

+0

कोई समस्या नहीं है! मुझे आशा है कि यह किसी की भी मदद करेगी जिसकी आवश्यकता है। – localhost

+1

हाय पीटर, आपके कोड का हिस्सा प्राप्त कर रहा है काम कर रहा है लेकिन एसएमएस भेजना काम नहीं कर रहा है, मेरा मतलब यह है कि यह प्राप्त करने वाले अंत तक पहुंचाया गया है जबकि मैं उस एसएमएस को ब्लॉक करना चाहता हूं जब सेवा चल रही है। क्या आप कृपया बता सकते हैं कि क्या गलत हो रहा है? –

संबंधित मुद्दे