无法发送自动短信

时间:2019-02-05 07:36:25

标签: java android alarmmanager

我正在一个项目上,该项目需要一个日期和时间,并在当日自动将预先写好的消息发送到指定的手机号码。 我为此使用了警报管理器,但无法正常工作。很久以来,我一直在尝试调试程序,以至于看不到到底是什么问题。

final Calendar c = Calendar.getInstance();
String date=releaseDateEditText.getText().toString();
String data[]= date.split("-");
c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(data[0]));
c.set(Calendar.MONTH,Integer.parseInt(data[1]));
c.set(Calendar.YEAR,Integer.parseInt(data[2]));
c.set(Calendar.AM_PM, Calendar.PM);
c.set(Calendar.HOUR_OF_DAY, 11);
c.set(Calendar.MINUTE, 18);
c.set(Calendar.SECOND, 0);
Intent _myIntent = new Intent(getApplicationContext(), message.class);
_myIntent.putExtra("name", name.getText());
_myIntent.putExtra("agency", agency.getText());
_myIntent.putExtra("book", bookingDateEditText.getText());
_myIntent.putExtra("release", releaseDateEditText.getText());
pintent = PendingIntent.getBroadcast(getApplicationContext(), 1, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pintent);
Toast.makeText(getApplicationContext(), "Alarm set for " + releaseDateEditText.getText(), Toast.LENGTH_LONG).show();

public class message extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String SPhone = "Phonenumber";
        String SSms = intent.getStringExtra("name");
        SSms = SSms + "\n" + intent.getStringExtra("agency") + "\n" + intent.getStringExtra("book") + "\n" + intent.getStringExtra("release");
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(SPhone, null, SSms, null, null);
    }
}

1 个答案:

答案 0 :(得分:1)

如果您浏览Use of SMS or Call Log permission groups,将会发现从2018年12月开始,Playstore上不允许使用具有SEND_SMS权限的应用程序,除非它们是默认的SMS / Dialer应用程序。您要么必须将应用程序作为例外提交,要么要删除SMS权限。

  

对于请求访问SMS或呼叫日志权限的应用,预期的和允许的用途包括默认的SMS处理,默认的电话处理或助手处理功能。

     

在提示用户接受上述任何权限之前,必须先将应用程序主动注册为默认的SMS,电话或助手处理程序,并且当它们不再是默认处理程序时,必须立即停止使用该权限。

回答问题:

好了,回到您的问题上,许多android设备制造商都在使用积极的策略来节省电量。当用户从最近的标签中清除其应用程序时,该应用程序将被强制关闭,从而取消所有警报,广播接收器,服务等。在大多数设备制造商(如OnePlus,Huwaei,Xiaomi,Vivo,Oppo等)中都会发生这种情况。

它们具有AutoStartManagers / AutoLaunchManagers,可以阻止应用程序在后台运行。您必须按照THIS SO ANSWER中所述的步骤将您的应用列入白名单。