如何在某些标志的基础上在Android手机上禁用/启用短消息

时间:2013-03-02 10:27:13

标签: android

我正在寻找一个可以禁用发送或接收的应用程序 - 来自Android设备的短信。一旦安装了应用程序,它会检查一个web url是否为布尔值0或1,如果它为零,则sms被禁用,否则启用它。

任何人都可以指导我从哪里开始?这可能吗?

2 个答案:

答案 0 :(得分:2)

Imho你根本无法禁用短信接收/发送,但你可以收到短信收到的广播意图。

收到的SMS广播意图是一个有序的广播,它将按接收者中定义的优先级顺序发送给所有广播接收者。

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

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


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

答案 1 :(得分:2)

您可以为传入的短信注册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();
      }
    }
}

然而 - 不可能以这种方式中止传出短信。请注意,如果注册了多个BroadcastReceivers,将首先处理优先级最高的那个(android:priority)。