2017-02-02 2 views
-1

Ich habe einen Dienst, der das Hintergrundbild ändert. Ich habe Alarm Manager hinzugefügt, um es jeden Tag zu wiederholen, aber es funktioniert nicht.Warum der Alarmmanager nicht funktioniert?

On Button klicken:

ON1 ="ON"; 
Customthemes.AppPrefrances.getInstance(getActivity()).setON1(ON1); 
Intent start = new Intent (getActivity(),Changeimage.class); 
getActivity().startService(start); 

Auf startcommand in Service:

Calendar calendar = Calendar.getInstance(); 
     int day = calendar.get(Calendar.DAY_OF_WEEK); 

     switch (day) { 


      case Calendar.FRIDAY: 
       Bitmap bitmap5 = BitmapFactory.decodeFile(check5); 
       WallpaperManager myWallpaperManager1 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager1.setBitmap(bitmap5); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.MONDAY: 
       Bitmap bitmap1 = BitmapFactory.decodeFile(check); 
       WallpaperManager myWallpaperManager2 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager2.setBitmap(bitmap1); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.SATURDAY: 
       Bitmap bitmap6 = BitmapFactory.decodeFile(check6); 
       WallpaperManager myWallpaperManager3 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager3.setBitmap(bitmap6); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.SUNDAY: 
       Bitmap bitmap7 = BitmapFactory.decodeFile(check7); 
       WallpaperManager myWallpaperManager4 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager4.setBitmap(bitmap7); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.THURSDAY: 
       Bitmap bitmap4 = BitmapFactory.decodeFile(check4); 
       WallpaperManager myWallpaperManager5 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager5.setBitmap(bitmap4); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.TUESDAY: 
       Bitmap bitmap2 = BitmapFactory.decodeFile(check2); 
       WallpaperManager myWallpaperManager6 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager6.setBitmap(bitmap2); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
      case Calendar.WEDNESDAY: 
       Bitmap bitmap3 = BitmapFactory.decodeFile(check3); 
       WallpaperManager myWallpaperManager7 
         = WallpaperManager.getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager7.setBitmap(bitmap3); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       break; 
     } 
     Calendar calendar2 = Calendar.getInstance(); 
     calendar2.setTimeInMillis(System.currentTimeMillis()); 
     calendar2.set(Calendar.SECOND, 0); 
     calendar2.set(Calendar.MINUTE, 0); 
     calendar2.set(Calendar.HOUR, 0); 
     calendar2.set(Calendar.AM_PM, Calendar.AM); 
     calendar2.add(Calendar.DAY_OF_MONTH, 1); 

     Intent intentalarm = new Intent(getApplicationContext(), AlarmReceiver.class); 
     intentalarm.setAction("packagename.ACTION"); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 
       0, intentalarm, PendingIntent.FLAG_UPDATE_CURRENT); 
     AlarmManager alarm = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     alarm.cancel(pendingIntent); 
     alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar2.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent); 
    } 
    return START_STICKY; 

AlarmReceiver:

@Override 
public void onReceive(Context context, Intent intent) { 


    String action = intent.getAction(); 
    if (SOMEACTION.equals(action)) { 
     Intent start = new Intent (context,Changeimage.class); 
     context.startService(start); 
    } 
} 

Was das Problem sein kann? Warum funktioniert es nicht?

+0

bekommen haben schreibst du deine aktion in manifest? –

Antwort

0

Ihr Empfänger in manifest registrieren ähnliche

<receiver android:name=".AlarmReceiver" /> 

Wert senden ähnliche

Intent intentalarm = new Intent(getApplicationContext(), AlarmReceiver.class); 
      intentalarm.putExtra("packagename" 

); 

wie diese

@Override 
public void onReceive(Context context, Intent intent) { 


    String action = intent.getStringExtra("packagename"); 
    if (SOMEACTION.equals(action)) { 
     Intent start = new Intent (context,Changeimage.class); 
     context.startService(start); 
    } 
} 
Verwandte Themen