如何跟踪Android的消息?(How to track the messages in Andro

2019-07-29 18:10发布

我想开发出跟踪发送的应用程序/接收短信。 我的意思是,当用户从它的设备发送消息,该消息的细节应保存到由我提供的表。 同样地,当设备接收任何短信,那么也应保存到我所提供的表格。

需要注意的是 ,用户采用Android的默认邮件应用程序发送的消息。 我的意思是我不是我的整合与默认的消息应用程序。 我只需要跟踪从该应用程序发送的所有邮件的由于Android跟踪其消息应用程序 发送的邮件文件夹中的所有发送的消息。

我会怎么做呢? 请帮我。 我不需要答案,但我需要一些线索去做。

请不要建议来读取收件箱和发件箱等消息,因为我想,当用户发送/接收它来保存的消息。 后不发送或接收它。

Answer 1:

这是很容易在你的清单广播接收机写做:

编辑:看来只能为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();


Answer 2:

不要叫 abortBroadcast(),你会阻止其他应用程序接收SMS_RECEIVED有序广播。 这是不好的行为,这不是Android是什么。 我不明白为什么谷歌甚至可以让开发者中止系统的意图像SMS的广播。



文章来源: How to track the messages in Android?