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

Android 在Oppo手机上以编程方式发送短信,android,sms,oppo,Android,Sms,Oppo,我的android应用程序以编程方式发送短信(通常由推送消息触发),并在许多android版本和设备上正常工作。然而,在一款新型Oppo手机CPH1851上,我看到一个通知弹出窗口,上面写着: “[应用程序名称]将向[电话号码]发送短信” (其中,[应用程序名称]是我的应用程序的名称,[电话号码]是应用程序向其发送短信的号码。) 通知有一个“发送”按钮和一个“取消”按钮(后者带有递减计时器) 显然,这似乎是安卓安全的又一次误入歧途的尝试,没有考虑碎片化和用户体验,只是想解决它 感谢您的帮助请尝

我的android应用程序以编程方式发送短信(通常由推送消息触发),并在许多android版本和设备上正常工作。然而,在一款新型Oppo手机CPH1851上,我看到一个通知弹出窗口,上面写着:

“[应用程序名称]将向[电话号码]发送短信”

(其中,[应用程序名称]是我的应用程序的名称,[电话号码]是应用程序向其发送短信的号码。)

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

显然,这似乎是安卓安全的又一次误入歧途的尝试,没有考虑碎片化和用户体验,只是想解决它


感谢您的帮助

请尝试以下代码并添加发送短信权限

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();
        }
试试看{
SmsManager SmsManager=smsmsmanager.getDefault();
arraylistparts=smsmsmanager.divideMessage(sb.toString());
//sendTextMessage(电话号码,空,消息,空,空);
smsManager.sendMultipartTextMessage(电话、空、部件、,
空,空);
Toast.makeText(活动“成功发送消息”,Toast.LENGTH_SHORT).show();
}捕获(例外e){
Toast.makeText(getApplicationContext(),“SMS失败!”,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();

        }
smsmsmanager sms=smsmsmanager.getDefault();
列表消息=sms.divideMessage(消息);
用于(字符串消息:消息){
PendingEvent Sentinent=PendingEvent.getBroadcast(这个,0,新意图(“SMS_发送”),0);
PendingIntent deliveredIntent=PendingIntent.getBroadcast(此,0,新意图(“SMS_已交付”),0);
sms.sendTextMessage(电话、空、消息、Sentinent、deliveredIntent);
Toast.makeText(活动“成功发送消息”,Toast.LENGTH_SHORT).show();
}

请尝试下面的代码并添加发送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();
        }
试试看{
SmsManager SmsManager=smsmsmanager.getDefault();
arraylistparts=smsmsmanager.divideMessage(sb.toString());
//sendTextMessage(电话号码,空,消息,空,空);
smsManager.sendMultipartTextMessage(电话、空、部件、,
空,空);
Toast.makeText(活动“成功发送消息”,Toast.LENGTH_SHORT).show();
}捕获(例外e){
Toast.makeText(getApplicationContext(),“SMS失败!”,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();

        }
smsmsmanager sms=smsmsmanager.getDefault();
列表消息=sms.divideMessage(消息);
用于(字符串消息:消息){
PendingEvent Sentinent=PendingEvent.getBroadcast(这个,0,新意图(“SMS_发送”),0);
PendingIntent deliveredIntent=PendingIntent.getBroadcast(此,0,新意图(“SMS_已交付”),0);
sms.sendTextMessage(电话、空、消息、Sentinent、deliveredIntent);
Toast.makeText(活动“成功发送消息”,Toast.LENGTH_SHORT).show();
}

Oppo的定制版Android(称为ColorOS)就是造成这一问题的原因

设置/安全性/权限/发送短信可显示应用程序是否“允许”-允许发送短信(“询问”和“禁止”是其他选项)。将此设置为“允许”可在一个Oppo型号上解决问题。但在另一个Oppo型号上则没有


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

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

设置/安全性/权限/发送短信可显示应用程序是否“允许”-允许发送短信(“询问”和“禁止”是其他选项)。将此设置为“允许”可在一个Oppo型号上解决问题。但在另一个Oppo型号上则没有


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

这是系统警报。在大多数情况下,你不能绕过它。此外,谷歌已经更改了生产中SMS权限的准则。请查看。非常熟悉支持SMS的应用程序的Play Store列表要求,但这只决定你是否可以在Play Store中列出它。你能更具体地说明“系统警报”吗--有任何文档吗?这是系统警报。在大多数情况下,您不能绕过它。此外,谷歌已经更改了生产中SMS权限的准则。请查看。非常熟悉支持SMS的应用程序的Play Store列表要求,但这只决定了您是否可以在Play Store中列出它。您能否更具体地说明“系统警报"--有任何文档吗?正如我在帖子中所说,我的应用程序在许多手机上都能正常工作。你的代码片段只是发送SMSdid的基本方法。你遇到的问题与我在你的Oppo手机上描述的问题相同?正如我在帖子中所说,我的应用程序在许多手机上都能正常工作。你的代码片段就是如何发送SMSdid的基本方法,你遇到的是相同的pr我在您的Oppo手机上描述的问题?您仍然面临这个问题吗?您仍然有屏幕截图吗?我通过让用户更改设置(如上所述)解决了这个问题。在我的应用程序中,我已使用ScreenShot更新了OP,但禁用权限监控已关闭。用户是否仍能看到提示?我想知道是否有一种方法,用户可以在发送前知道要发送的短信,就像使用SMSmanager发送时上面的SS一样。您仍然可以使用fac吗