Отправить СМС программно на телефоны Oppo - PullRequest
0 голосов
/ 23 мая 2019

Мое приложение для Android отправляет SMS программно (обычно вызывается push-сообщением) и работает, как и ожидалось, на многих версиях и устройствах Android. Однако на новой модели телефона Oppo CPH1851 я вижу всплывающее уведомление:

"[имя приложения] отправит SMS на [номер телефона]"

(где [имя приложения] - это имя моего приложения, а [номер телефона] - номер, на который приложение отправляет SMS на

Проблема с СМС телефона Oppo

В уведомлении есть кнопка "Отправить" и кнопка "Отмена" (последняя с уменьшающимся таймером)

Очевидно, что это выглядит как еще одна ошибочная попытка безопасности Android, не задумываясь о фрагментации и пользовательском опыте, а просто пытаясь ее решить.

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Причиной этой проблемы является настроенная в Oppo версия Android (называемая ColorOS).

Настройки / Безопасность / Разрешения / Отправить SMS показывает, разрешено ли приложению отправлять SMS (другие варианты - «Спросить» и «Запретить»). Установка «Разрешить» позволила устранить проблему на одной модели Oppo. Но не по другому.

Таким образом, другой вариант - включить параметры разработчика и включить «Отключить мониторинг разрешений» в самом низу списка (это, кажется, отключает весь мониторинг разрешений ColorOS, но не влияет на базовый Android permissioning).

0 голосов
/ 23 мая 2019

Пожалуйста, попробуйте этот код ниже и добавьте разрешение 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();

        }
...