2016-04-21 14 views
1

Ich entwickelte eine App, die zu einem bestimmten Zeitpunkt die TomTom-Dienste aufrufen muss. Für frühere Version von Android 6 habe ich eine Warnung instanziiert und führte die Arbeit aus, wenn es BroadcastReceiver eingibt. Ab der Version 6 lehnt Google meine App ab, weil ich REQUEST_IGNORE_BATTERY_OPTIMIZATIONS nicht verwenden kann und daher mein Alarm nicht funktioniert, weil er vom System geschlossen wird.Android 6 BroadcastReceicer und Anrufdienst

las ich Google Cloud Messaging (GCM), aber glaube nicht,

es in meinem Fall ist eine Lösung für mein Problem?

ich möchte einen bestimmten tom tom service zu einem bestimmten zeitpunkt anrufen.

dank

Mein Code zu 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); 
      } 

meinen Code Dienst rufen:

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(); 

     } 

Antwort

0

Da Sie Zugang zum Internet haben, ich sehe keinen Grund, warum können Sie Verwenden Sie GCM nicht, um Ihre http-Anfrage auszulösen.