在android + API19中:我制作了一个短信应用,我只需要在其中收到短信但是当我的应用程序设置为默认时,手机本身的短信应用程序被禁用,无法发送消息。我唯一需要的是收到一条消息。 但由于这一点,电话的消息应用程序被禁用并且无法发送消息,请指导,我该怎么办? 我只需要接收短信!
<receiver
android:name=".ReceiverSms"
android:permission="android.permission.BROADCAST_SMS"
android:enabled="true"
>
<intent-filter android:priority="999999">
<action android:name="android.provider.Telephony.SMS_DELIVER" />
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
代码:
public class ReceiverSms extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
HelperWork.toastShower(context, "Runned");
boolean pswDare = true;
Bundle extras = intent.getExtras();
if (extras == null) {
return;
}
Object[] smsExtras = (Object[]) extras.get(SmsConstant.PDUS);
ContentResolver contentResolver = context.getContentResolver();
Uri smsUri = Uri.parse(SmsConstant.SMS_URI);
String body = null;
String address = null;
for (Object smsExtra: smsExtras) {
byte[] smsBytes = (byte[]) smsExtra;
SmsMessage smsMessage = SmsMessage.createFromPdu(smsBytes);
HelperWork.toastShower(context, body);
body = smsMessage.getMessageBody();
address = smsMessage.getOriginatingAddress();
// do other somthing
}
ContentValues values = new ContentValues();
values.put(SmsConstant.COLUMN_ADDRESS, address);
values.put(SmsConstant.COLUMN_BODY, body);
Uri uri = contentResolver.insert(smsUri, values);
}
}
答案 0 :(得分:2)
其他仅想要阅读新邮件的应用可以在新短信到达时收到 SMS_RECEIVED_ACTION 广播意图。但是,只有接收 SMS_DELIVER_ACTION 广播的应用程序(用户指定的默认SMS应用程序)才能写入由android.provider.Telephony类和子类定义的SMS提供程序。
因此,如果您只想接收短信,请仅使用 SMS_RECEIVED_ACTION 并移除 SMS_DELIVER_ACTION 。您不必将应用设置为默认设置,只能接收短信。