我添加了手機驗證短信功能到我的應用程序的註冊過程,但短信寫入發送和收到的短信收件箱。目前我只發送一個簡單的文本來驗證號碼,因此在這裏沒有任何祕密,但它不那麼用戶友好,所以我想知道如果我能以某種方式阻止寫這個短信。安卓 - 刪除手機驗證短信發送到自己
我加了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