阻止传入文本(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>