当我的应用设置为默认值时,手机本身的短信应用会被禁用

时间:2015-08-21 09:41:48

标签: java android

在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);

    }
}

1 个答案:

答案 0 :(得分:2)

查看android developer's blog

  

其他仅想要阅读新邮件的应用可以在新短信到达时收到 SMS_RECEIVED_ACTION 广播意图。但是,只有接收 SMS_DELIVER_ACTION 广播的应用程序(用户指定的默认SMS应用程序)才能写入由android.provider.Telephony类和子类定义的SMS提供程序。

因此,如果您只想接收短信,请仅使用 SMS_RECEIVED_ACTION 并移除 SMS_DELIVER_ACTION 。您不必将应用设置为默认设置,只能接收短信。