安卓 6 广播接收器和呼叫服务



我开发了一个应用程序,需要在特定时间调用tomtom服务。对于早期版本的Android 6,我已经实例化了一个警报,并在它进入BroadcastReceiver时执行了工作。从版本 6 开始,谷歌拒绝我的应用程序,因为我无法使用REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,因此我的闹钟不起作用,因为它被系统关闭。

我阅读了谷歌云消息(GCM),但不认为在我的情况下

我的问题有解决方案吗?

我想在特定时间呼叫特定的汤姆汤姆服务。

谢谢

我的代码设置警报:

if (Build.VERSION.SDK_INT>=19 && Build.VERSION.SDK_INT<=22) {
                alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmDate.getTimeInMillis(), sender);
                Log.d(LOG_TAG,"SETTATO ALLARME PER API MAGGIORE DI 19 O MINORE UGUALE A 22");

            } else if(Build.VERSION.SDK_INT>22){
                alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmDate.getTimeInMillis(), sender);
            //  alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(alarmDate.getTimeInMillis(), sender), sender);
                Log.d(LOG_TAG,"SETTATO ALLARME PER API MAGGIORE O UGUALE A 23");
            }else { 
                Log.d(LOG_TAG,"SETTATO ALLARME CON VERSIONE API INFERIORE A 19");
                alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDate.getTimeInMillis(), sender);
            }

我的代码调用服务:

String result=readUrl("https://api.tomtom.com/lbs/services/route/3/........."); 
private static String readUrl(String urlString) throws Exception {
            BufferedReader reader = null;
            StringBuffer buffer = new StringBuffer();
            try {
                URL url = new URL(urlString);
                reader = new BufferedReader(new InputStreamReader(url.openStream()));
                int read;
                char[] chars = new char[1024];
                while ((read = reader.read(chars)) != -1)
                    buffer.append(chars, 0, read); 
                return buffer.toString();
            } catch (Exception e) {
                e.printStackTrace();
                 Log.e(LOG_TAG, "ERRORE:"+e.getMessage());
            }finally {
                if (reader != null)
                    reader.close();
            }
            return buffer.toString();
        }

由于您可以访问互联网,因此我认为您没有任何理由无法使用GCM来触发http请求。

最新更新