1
我開發了一個應用程序,需要在特定時間調用tomtom服務。對於早期版本的Android 6,我已經實例化了一個警報,並在進入BroadcastReceiver時執行了這項工作。 從版本6開始,谷歌拒絕我的應用程序,因爲我無法使用REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,因此我的鬧鐘無法工作,因爲它已被系統關閉。Android 6 BroadcastReceicer和通話服務
我讀谷歌雲端通訊(GCM),但不認爲我的情況
有我的問題的解決方案?
我想在特定的時間致電特定的湯姆湯姆服務。
感謝
我的代碼setAlarm:
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();
}