我正在寻找一个可以禁用发送或接收的应用程序 - 来自Android设备的短信。一旦安装了应用程序,它会检查一个web url是否为布尔值0或1,如果它为零,则sms被禁用,否则启用它。
任何人都可以指导我从哪里开始?这可能吗?
答案 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
)。