2016-04-21 37 views
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(); 

     } 

回答

0

既然你能上網,我看不出有任何理由,你爲什麼不能不使用GCM來觸發你的http請求。