代码之家  ›  专栏  ›  技术社区  ›  Mrak Vladar

无法发送自动文本消息

  •  1
  • Mrak Vladar  · 技术社区  · 5 年前

    我正在做一个项目,它需要一个日期和时间,并在当天自动向指定的手机号码发送一条预先写好的消息。 我正在使用报警管理器,但它不起作用。我已经试着调试我的程序太久了,我看不出到底是什么问题。

    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 回复  |  直到 5 年前
        1
  •  1
  •   ankuranurag2    5 年前

    如果你通过 Use of SMS or Call Log permission groups ,您将发现从2018年12月起,PlayStore上不允许使用权限发送短信的应用程序,除非它们是默认的短信/拨号程序应用程序。您要么将应用程序作为例外进行归档,要么删除SMS权限。

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

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

    问题答案:

    好吧,回到你的问题上来,许多Android设备制造商正在使用积极的政策来节省电池。当用户从最近的选项卡中清除其应用程序时, 应用程序被强制关闭,从而取消所有警报、广播接收器、服务等。 . 这发生在大多数设备制造商,如OnePlus、Huwaei、Xiaomi、Vivo、Oppo等。

    它们有自动启动管理器/自动启动管理器,防止应用程序后台运行。您必须使用中提到的步骤白名单您的应用程序 THIS SO ANSWER .