我添加了手机验证短信功能到我的应用程序的注册过程,但短信写入发送和收到的短信收件箱。目前我只发送一个简单的文本来验证号码,因此在这里没有任何秘密,但它不那么用户友好,所以我想知道如果我能以某种方式阻止写这个短信。安卓 - 删除手机验证短信发送到自己
我加了abortBroadcast();如果代码是正确的,但没有效果。我使用的是Android 4.4.2,为了安全起见,我已经阅读过,没有办法做到这一点,那么有没有办法以不同的方式实现我想要的?我知道其他应用程序也能做到这样...
的代码发送短信:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(Utils.phone, null, "text", null, null);
用于消费THR短信代码:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]);
if (messages.getMessageBody().contains("text")) {
Toast.makeText(Utils.context,"ok",Toast.LENGTH_LONG).show();
abortBroadcast();
}
}
}
这是明显的:
<receiver android:name="com.tomerapp.tomerapp.utils.SMSReceiver" android:exported="false">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
是否android:exported =“false”意味着接收器/我的应用程序只会捕获从应用程序本身发送的短信?我不想为应用程序发送的短信浪费电池。
从Android 4.4开始,只有默认的SMS应用程序对提供程序具有标准写入权限,非默认应用程序通常无法控制正在写入或删除的消息。如果你的应用只是发送一条验证消息,我不会担心试图删除它。这可能比它的价值更麻烦。 – 2015-03-08 20:11:46
WhatsApp以同样的方式证实,短信没有出现在列表中 – Amos 2015-03-08 20:27:20
我不确定WhatsApp是如何做到的,但是您可以让应用发送自己的数据消息,并且不会在原生应用中显示。此外,如果在验证时选择WhatsApp作为默认SMS应用程序,它可以选择不将消息写入提供商,因此它不会显示在“列表”中。 – 2015-03-08 20:36:17