在Oppo手机上以编程方式发送短信

时间:2019-05-23 12:46:44

标签: android sms oppo

我的android应用程序以编程方式发送SMS(通常由推送消息触发),并且可以在许多Android版本和设备上正常运行。但是,在新的Oppo手机CPH1851上,我会看到一个通知弹出窗口,提示:

“ [应用名称]会将短信发送到[电话号码]”

(其中[app name]是我的应用程序的名称,[phone number]是该应用程序向其发送SMS的号码

Oppo phone SMS problem

该通知具有一个“发送”按钮和一个“取消”按钮(后带有递减计时器)

很明显,这似乎是对Android安全性的另一种误导性尝试,没有考虑碎片化和用户体验,而只是想解决它。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

请尝试以下代码,并添加SEND_SMS权限。

try {
            SmsManager smsManager = SmsManager.getDefault();

            ArrayList<String> parts = smsManager.divideMessage(sb.toString());
            //smsManager.sendTextMessage(phoneNumber, null, message, null, null);
            smsManager.sendMultipartTextMessage(phone, null, parts,
                    null, null);
            Toast.makeText(activity, "Send Message Successfully ", Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "SMS Failed !", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }

在下面的代码中,我在Oppo手机中可以尝试

SmsManager sms = SmsManager.getDefault();
        List<String> messages = sms.divideMessage(message);
        for (String msg : messages) {

            PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
            PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
            sms.sendTextMessage(phone, null, msg, sentIntent, deliveredIntent);
            Toast.makeText(activity, "Send Message Successfully", Toast.LENGTH_SHORT).show();

        }

答案 1 :(得分:0)

Oppo的Android定制版本(称为ColorOS)是造成此问题的原因。

设置/安全性/权限/发送SMS会向您显示该应用程序是否“允许”发送短信(其他选项“询问”和“禁止”)。将此设置为“允许”可以使问题在一个Oppo模型上消失。但是不能在另一个上。

因此,另一个选择是启用开发人员选项,并在列表的最底部打开“禁用权限监视”(这似乎关闭了所有ColorOS权限监视,但不会影响基本的Android许可)。