2012-06-25 5 views
6

사용자 설정에 따라 수신 문자 메시지를 차단하는 기능이있는 앱에서 작동하지만 수신 메시지를 감지하는 데 문제가 있습니다.들어오는 텍스트 차단 (Android)

내 코드를보고 내가 잘못하고있는 것을 알려주시겠습니까? 이 질문과 유사한 다른 질문을 검토했지만 자세한 대답이나 참조할만한 정보가있는 항목을 찾을 수 없습니다.

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> 

I했습니다 여기 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

@PeterMerrill .. 이것을 공유해 주셔서 감사합니다 !! – swiftBoy

+0

문제 없습니다! 나는 그것이 그것을 필요로하는 누군가를 돕기를 바란다. – localhost

+1

안녕하세요 피터, 귀하의 코드의 일부를 받고 작동하지만, SMS를 보내는 것은 작동하지 않습니다, 나는 그것이 서비스가 실행 중일 때 그 SMS를 차단하려는 동안 그것은 수신 엔드에 전달 뜻. 틀린 점을 지적 해주시겠습니까? –

관련 문제