2012-04-30 12 views
1

携帯電話のSMSアプリケーションから送信されたSMSの配信レポートをキャプチャするアプリを開発中です。どのSMSアプリケーションでもアンドロイドで送信されたSMSの配信レポートを生成する方法

私は配信レポートを送信し、また送信するメッセージングアプリに取り組んでいます。その後、

registerReceiver(new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 
       Bundle extras = new Bundle(); 
       extras = arg1.getExtras(); 
       switch (getResultCode()) { 
       case Activity.RESULT_OK: 
        notifyMessage("SMS delivered", getBaseContext(), extras.getInt("id")); 

        break; 
       case Activity.RESULT_CANCELED: 
        notifyMessage("SMS not delivered", getBaseContext(), extras.getInt("id")); 

        break; 
       default : 
        notifyMessage("Unable to generate delivery Report", getBaseContext(), extras.getInt("id")); 
       } 
      } 
     }, new IntentFilter(DELIVERED)); 

PendingIntent deliveredPI = PendingIntent.getBroadcast(this, id, intent_delivery, 0); 

とをしかし、今、私は携帯電話にインストールされているすべてのSMSアプリによって送信されたSMSを収集することができるようにする方法を知ってほしい。これは、保留中の意図を設定することによって行われます。

現在のところ、この目的のためにブロードキャストリスナーを設定するというアイデアはありますが、どのようにブロードキャストキャストリスナーを設定するのか、どんな種類のwhtパラメータをチェックするのか分かりません。私は情報のためにPDUをチェックしなければならないと思うが、私は確信していない。私はネットを検索しようとしましたが、私の必要性に関係するものは見つけられませんでした。

助けてください ありがとうございます。あなたの活動のクラスで

+0

午前同じ問題を必要としている私にとっては、返信 – Sathyapradeep

答えて

1

、これらのグローバル変数を宣言:あなたの活動の

private BroadcastReceiver sendBroadcastReceiver; 
private BroadcastReceiver deliveryBroadcastReceiver; 
String SENT = "SMS_SENT"; 
String DELIVERED = "SMS_DELIVERED"; 

オーバーライドのonCreateをし、あなたのレシーバを登録します。

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    sendBroadcastReceiver = new BroadcastReceiver() 
    { 

    public void onReceive(Context arg0, Intent arg1) 
    { 
     switch (getResultCode()) 
     { 
     case Activity.RESULT_OK: 
      Toast.makeText(getBaseContext(), "SMS Sent", Toast.LENGTH_SHORT).show(); 
      break; 
     case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
      Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); 
      break; 
     case SmsManager.RESULT_ERROR_NO_SERVICE: 
      Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); 
      break; 
     case SmsManager.RESULT_ERROR_NULL_PDU: 
      Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); 
      break; 
     case SmsManager.RESULT_ERROR_RADIO_OFF: 
      Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); 
      break; 
     } 
    } 
}; 

deliveryBroadcastReceiver = new BroadcastReceiver() 
{ 
    public void onReceive(Context arg0, Intent arg1) 
    { 
     switch (getResultCode()) 
     { 
     case Activity.RESULT_OK: 
      Toast.makeText(getBaseContext(), "SMS Delivered", Toast.LENGTH_SHORT).show(); 
      break; 
     case Activity.RESULT_CANCELED: 
      Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); 
      break; 
     } 
    } 
}; 
registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED)); 
registerReceiver(sendBroadcastReceiver , new IntentFilter(SENT)); 
} 

次、あなたの送信のSMS法はわずか6行が残されていますコード:

public void sendSMS(String phoneNumber, String message) 
{ 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
} 

最後に、あなたの活動停止時に受信者を登録解除してください:

@Override 
protected void onStop() 
{ 
    unregisterReceiver(sendBroadcastReceiver); 
    unregisterReceiver(deliveryBroadcastReceiver); 
    super.onStop(); 
} 
+0

おかげでおい、その作業罰金を行ってくださいそうならば、あなたはそれを手に入れました。あなたは私の時間を救った。ありがとう –

+0

あなたは歓迎です – Jeba

関連する問題