Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止传入文本(Android)_Android_Text_Block_Messages - Fatal编程技术网

阻止传入文本(Android)

阻止传入文本(Android),android,text,block,messages,Android,Text,Block,Messages,我正在开发一个应用程序,希望它能够阻止传入的文本消息(取决于用户设置),但我在检测传入的消息时遇到了问题 你介意看看我的密码,告诉我我做错了什么吗? 我已经浏览了其他类似于这个问题的问题,但我找不到任何详细的答案或足够的信息供我参考 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle;

我正在开发一个应用程序,希望它能够阻止传入的文本消息(取决于用户设置),但我在检测传入的消息时遇到了问题

你介意看看我的密码,告诉我我做错了什么吗? 我已经浏览了其他类似于这个问题的问题,但我找不到任何详细的答案或足够的信息供我参考

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>

)以及这里的问题:

有人能给我指一下正确的方向吗?
我将不胜感激。

以下是我用来阻止传入文本的方法。 我就是这样回答我的问题的


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 **********************");
        }

    }

}

}
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.widget.Toast;
公共类BroadCastReceiver扩展了BroadCastReceiver
{
/**在首次创建活动时调用*/
私有静态最终字符串ACTION=“android.provider.Telephony.SEND_SMS”;
公共静态int MSG_TPE=0;
公共void onReceive(上下文、意图)
{ 
字符串MSG_TYPE=intent.getAction();
if(MSG_TYPE.equals(“android.provider.Telephony.SMS_RECEIVED”))
{
//Toast Toast=Toast.makeText(上下文,“收到短信:+MSG\u TYPE,Toast.LENGTH\u LONG);
//toast.show();
Bundle=intent.getExtras();
对象消息[]=(对象[])bundle.get(“PDU”);
SmsMessage SmsMessage[]=新SmsMessage[messages.length];
对于(int n=0;n对于(int i=0;i可能的重复项),我已经查看了该问题的答案,但没有发现任何有用的内容。我尝试了清单接收器的变体,如“.SmsReceiver”和“.listener.SmsReceiver”。我的文件名为“SmsReceiver.java”问题是什么?它在哪里失败了?logcat中有什么?您是否使用调试器介入了代码?预期的输出是什么?欢迎使用堆栈溢出:)一定要检查Meta.stackoverflow.com和指导原则,以充分了解它的工作原理:DHi Peter,您的代码的接收部分工作正常,但发送短信不工作,我的意思是,当我想在服务运行时阻止短信发送到接收端。您能指出哪里出了问题吗?@NaumanZubair i-di不要这样写代码。我写代码只是为了阻止收到的短信。@Petermerill请指导我实现这个目标。我非常感谢你的考虑。我被困在这里,我想阻止发送短信。我不相信这是可能的。这个答案不应该被接受。我应用了这个,它不起作用。它显示了blocking短信,但我收到短信。
<?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>