2017-10-19 1 views
0

アプリをデフォルトのメッセージングアプリとして設定すると、受信したすべてのメッセージは他のメッセージアプリに表示されません。ここに私のSmsReceiverとマニフェストがあります。アプリをデフォルトのメッセージングアプリとして設定した後、他のメッセージングアプリにテキストメッセージが表示されないのはなぜですか?

@Override 
public void onReceive(Context context, Intent intent) { 

    Object[] smsExtra = (Object[]) intent.getExtras().get("pdus"); 
    String body = ""; 

    for (int i = 0; i < smsExtra.length; ++i) { 
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]); 
     body += sms.getMessageBody(); 
    } 

    Notification notification = new Notification.Builder(context) 
      .setContentText(body) 
      .setContentTitle("New Message") 
      .setSmallIcon(R.drawable.ic_alert) 
      .setStyle(new Notification.BigTextStyle().bigText(body)) 
      .build(); 
    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context); 
    notificationManagerCompat.notify(1, notification); 
} 


<receiver 
      android:name=".SmsReceiver" 
      android:permission="android.permission.BROADCAST_SMS" 
      android:enabled="false" 
      android:exported="true" > 
      <intent-filter android:priority="0" > 
       <action android:name="android.provider.Telephony.SMS_DELIVER" /> 
      </intent-filter> 
     </receiver> 

メッセージは通知として表示され、他のメッセージングアプリケーションには表示されません。実際には、MMSを送信するためだけにデフォルトでアプリを設定したいので、自分のアプリで着信メッセージを処理したくありません。

ありがとうございます。

+0

は '私のSmsReceiverとマニフェストfile.'ある拡張動作しますか?あなたの質問を編集してください。 – Xenolion

+0

woops私はちょうど投稿しました。 –

+0

デフォルトのアプリは、すべての着信SMSをプロバイダに書き込む責任があります。それはすべての着信MMSにも責任があります。あなたのアプリがデフォルトの場合、それはかなり本格的なメッセージングアプリでなければなりません。 –

答えて

0

以下のように受信機を更新しました。それは

パブリッククラスSmsReceiverは、あなたが言っているマニフェストがある場合はBroadcastReceiver {

@Override 
public void onReceive(Context context, Intent intent) { 

    Object[] smsExtra = (Object[]) intent.getExtras().get("pdus"); 
    String body = ""; 
    String msg_from = ""; 
    SmsMessage[] msgs = null; 
    msgs = new SmsMessage[smsExtra.length]; 
    for (int i = 0; i < smsExtra.length; ++i) { 
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]); 
     msgs[i] = SmsMessage.createFromPdu((byte[])smsExtra[i]); 
     msg_from = msgs[i].getOriginatingAddress(); 
     body += sms.getMessageBody(); 
    } 
    ContentValues values = new ContentValues(); 
    values.put("address", msg_from);//sender name 
    values.put("body", body); 
    context.getContentResolver().insert(Uri.parse("content://sms/inbox"), values); 
    Notification notification = new Notification.Builder(context) 
      .setContentText(body) 
      .setContentTitle(msg_from) 
      .setSmallIcon(R.drawable.ic_alert) 
      .setStyle(new Notification.BigTextStyle().bigText(body)) 
      .build(); 
    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context); 
    notificationManagerCompat.notify(1, notification); 
} 

}ここで

関連する問題