3

我正在寻找一个应用程序,该应用程序禁用从 android 设备发送或接收 SMS 消息或两者兼而有之。安装应用程序后,它会检查 Web url 的布尔值 0 或 1,如果为零,则禁用 sms,否则启用。

谁能指导我从哪里开始?这可能吗?

4

2 回答 2

2

恕我直言,您根本无法禁用 SMS 接收/发送,但您可以捕获 SMS 接收到的广播意图。

SMS 接收到的Broadcast Intent 是一个有序的Broadcast,它将按照Receiver 中定义的Priority 的顺序传递给所有Broadcast Receiver。

如果您注册优先级为 0 的广播接收器,您可以捕获 SMS 广播并取消它。

请记住,其他 SMS 应用程序也可以使用优先级 0 注册,相同优先级值的行为未定义。无论如何,短信也会收到,你只隐藏结果通知/铃声。


另一种方法是将 SMS 中心号码设置为一些无效值,但需要有根电话

于 2013-03-02T11:00:56.443 回答
2

您可以为传入的 SMS 注册一个 BroadcastReceiver 并用于this.abortBroadcast();中止其进一步处理:

在你的内心显现:

 <receiver android:name=".SMSBroadcastReceiver">
   <intent-filter>
     <action android:name="android.provider.telephony.SMS_RECEIVED"></action>
   </intent-filter>
 </receiver>

接收器的实现:

 public class SMSBroadcastReceiver extends BroadcastReceiver {

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent.getAction() == SMS_RECEIVED) {
        Bundle bundle = intent.getExtras();
        ...
        this.abortBroadcast();
      }
    }
}

但是 - 无法以这种方式中止发送的 SMS。请注意,如果注册了多个 BroadcastReceiver,则优先级最高的 ( android:priority) 将首先处理。

于 2013-03-02T11:12:50.473 回答