无法发送自动短信

问题描述 投票:1回答:1

我工作的一个项目,需要一个日期和时间,并自动在那一天到指定的手机号码发送预先编写的消息。我使用报警管理器这一点,但它不工作。我一直在试图调试我的程序了这么久,我看不到有什么错的究竟。

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);
    }
}
java android alarmmanager
1个回答
1
投票

如果你去通过Use of SMS or Call Log permission groups,你会发现,从2018年12月起,应用使用的权限SEND_SMS不允许在Play商店中,除非是默认短信/拨号器应用。要么你必须提交你的应用程序作为例外或删除短信的权限。

对于应用程序请求访问短信或通话记录的权限,预期和允许的用途包括默认短信处理,默认的电话处理,或助理处理能力。

应用程序必须积极注册为默认的短信,电话或助理处理程序提示用户接受任何上述权限之前,必须立即停止使用许可时,他们不再是默认的处理程序。

回答问题:

好了,回到你的问题,许多Android设备制造商正在使用激进的策略,以节省电池。当用户从最近打开的标签清除他/她的应用程序,该应用程序是力关闭,从而消除了所有的报警,broadcastReceivers,服务等。这发生在大部分的设备制造商,如万普拉斯,Huwaei,小蜜,活体,OPPO等。

他们有AutoStartManagers / AutoLaunchManagers是防止应用程序的后台运行。你会使用THIS SO ANSWER提到的步骤有白名单您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.