【问题标题】:The phone's itself sms app gets disabled when my app set to default当我的应用程序设置为默认值时,手机本身的短信应用程序被禁用
【发布时间】:2015-08-21 19:08:53
【问题描述】:

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

    }
}

【问题讨论】:

    标签: java android


    【解决方案1】:

    通过查看android developer's blog

    其他只想阅读新消息的应用可以改为在新 SMS 到达时接收 SMS_RECEIVED_ACTION 广播意图。但是,只有接收 SMS_DELIVER_ACTION 广播的应用(用户指定的默认 SMS 应用)才能写入由 android.provider.Telephony 类和子类定义的 SMS Provider。

    因此,如果您只想接收短信,则只需使用 SMS_RECEIVED_ACTION 并删除 SMS_DELIVER_ACTION。您不必为了只接收短信而将您的应用设为默认值。

    【讨论】:

    • 好的,谢谢!有没有办法在不设置为默认程序和根目录的情况下删除短信!还是从 root 发送短信?
    • 不,恐怕您必须将应用设置为默认短信应用才能在 Kitkat 中发送/删除短信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2015-07-05
    • 2018-02-07
    • 2018-04-03
    相关资源
    最近更新 更多