2012-04-26 63 views
-1

由于没有broadcastReceiver发送短信,因此我们需要定期轮询SMS内容提供商(content:// sms/sent),并提出一种方法来捕获消息已发送(onChange)。 这是最简单的部分!如何捕捉用户手动发送的短信?任何天才诡计?

棘手的是,它可能是一种可能(可能是一个巧妙的技巧,破解,变通或甚至现有系统中的漏洞),可以指示用户是手动发送短信还是由某些人自动发送其他已安装的应用程序与后台服务或由某些意图触发的接收器!

什么说?可能?

+0

只有使用原生SMS应用程序发送的短信才会显示在“已发送”表格中。任何使用“SmsManager”发送的应用程序,这些smses都不会记录在发送的文件夹中。 – st0le 2012-04-26 13:16:05

回答

0

如果乌拉圭回合应用正在发送短信那么在哪里得到短信的状态发送或不作为below..As你不具有全球回拨不发你不能知道它的短信..

/** 
* Listen to Delivery Reports of sent SMSs 
*/ 
private BroadcastReceiver mSmsDeliveryListener = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     try{ 
      int result = getResultCode(); 
      switch (result){ 
       case Activity.RESULT_OK: 
        //SMS Delivered 
        break; 

       case Activity.RESULT_CANCELED: 
       case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
       case SmsManager.RESULT_ERROR_NO_SERVICE: 
       case SmsManager.RESULT_ERROR_NULL_PDU: 
       case SmsManager.RESULT_ERROR_RADIO_OFF: 
        //SMS Delivery failed 
        break; 

       default: 
     //SMS Delivery failed 
        break; 
       } 

      }//End of Switch 
     }catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}; 
+1

马克答案,如果有用 – NitZRobotKoder 2012-04-26 14:19:48

+0

这并不回答被问了的问题 – Elemental 2012-04-26 14:30:54

+0

因为它是不可能得到短信不从系统回调与我们自己的接收器,我的答案持有一些价值是不是.. – NitZRobotKoder 2012-04-26 14:34:35