我想开发出跟踪发送的应用程序/接收短信。 我的意思是,当用户从它的设备发送消息,该消息的细节应保存到由我提供的表。 同样地,当设备接收任何短信,那么也应保存到我所提供的表格。
需要注意的是 ,用户采用Android的默认邮件应用程序发送的消息。 我的意思是我不是我的整合与默认的消息应用程序。 我只需要跟踪从该应用程序发送的所有邮件的由于Android跟踪其消息应用程序 发送的邮件文件夹中的所有发送的消息。
我会怎么做呢? 请帮我。 我不需要答案,但我需要一些线索去做。
请不要建议来读取收件箱和发件箱等消息,因为我想,当用户发送/接收它来保存的消息。 后不发送或接收它。
这是很容易在你的清单广播接收机写做:
编辑:看来只能为SMS_RECEIVED工作,看到这个线程
<receiver android:name=".SMSReceiver" android:enabled="true">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<action android:name="android.provider.Telephony.SMS_SENT"/>
</intent-filter>
</receiver>
和权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
然后创建接收llike:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
//do something with the received sms
}else if(intent.getAction().equals("android.provider.Telephony.SMS_SENT")){
//do something with the sended sms
}
}
}
为了处理传入的短信可能是这样的:
Bundle extras = intent.getExtras();
Object[] pdus = (Object[]) extras.get("pdus");
for (Object pdu : pdus) {
SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdu);
String origin = msg.getOriginatingAddress();
String body = msg.getMessageBody();
....
}
如果你想阻止短信在commen收件箱推,你可以做到这一点:
abortBroadcast();
请不要叫 abortBroadcast(),你会阻止其他应用程序接收SMS_RECEIVED有序广播。 这是不好的行为,这不是Android是什么。 我不明白为什么谷歌甚至可以让开发者中止系统的意图像SMS的广播。