Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中跟踪消息?_Android_Sms_Telephonymanager - Fatal编程技术网

如何在Android中跟踪消息?

如何在Android中跟踪消息?,android,sms,telephonymanager,Android,Sms,Telephonymanager,我想开发一个应用程序,跟踪发送/接收的短信。我的意思是,当用户从其设备发送消息时,消息详细信息应该保存到我提供的表中。类似地,当设备接收到任何SMS时,也应将其保存到我提供的表中 请注意,用户使用Android的默认消息应用程序发送消息。我的意思是,我没有将我的应用程序与默认消息应用程序集成。我只需要跟踪从该应用程序发送的所有消息,因为Android在其消息应用程序的sent Message文件夹中跟踪所有发送的消息 我该怎么做?请帮帮我。我不需要答案,但我需要一些线索 请不要建议阅读收件箱和发

我想开发一个应用程序,跟踪发送/接收的短信。我的意思是,当用户从其设备发送消息时,消息详细信息应该保存到我提供的表中。类似地,当设备接收到任何SMS时,也应将其保存到我提供的表中

请注意,用户使用Android的默认消息应用程序发送消息。我的意思是,我没有将我的应用程序与默认消息应用程序集成。我只需要跟踪从该应用程序发送的所有消息,因为Android在其消息应用程序的sent Message文件夹中跟踪所有发送的消息

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


请不要建议阅读收件箱和发件箱中的邮件,因为我想在用户发送/接收邮件时保存这些邮件。不是在发送或接收之后。

这很容易通过广播接收器写入您的清单:

编辑:似乎只适用于收到的短信,请参见此

处理传入的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();
....
}
如果您想阻止在Commo收件箱中推送sms,可以通过以下方式实现:

abortBroadcast();
请不要呼叫abortBroadcast
您将阻止其他应用程序接收SMS_接收到的命令广播。这是不好的行为,这不是安卓的目的。我不明白为什么谷歌甚至让开发者中止系统意图的广播,比如短信

你尝试过什么?你面临的问题是什么?“简单一点。”安德罗塞尔瓦我不知道怎么做。我不想要答案,但我想要一些线索。@Mido我不想阅读收件箱中的邮件并显示出来。我想在用户发送邮件时保存该邮件。我认为此[Post][1]中有您要查找的代码片段。[1] :我只想确认,当用户尝试从默认消息应用发送消息时,Android会调用我的Receiver类吗?对不起,我构建了一个应用程序来确保,我只收到SMS_RECEIVED操作,我不知道为什么。。。我将测试它感谢您宝贵的回复,请检查并让我知道如何跟踪发送的消息。可能有用:这个abortBroadcast功能允许我们制作软件来阻止来电或短信。我认为这是一件好事,也可以当作坏事,就像很多其他东西一样。人们可以用笔杀人,让我们停下来造笔吧。我同意。它对很多好的功能都非常有用。你不应该中止每一条传入的短信,但我的接收者可以决定:这条短信是给我的,所以中止广播,否则就让它通过
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();
....
}
abortBroadcast();