Próbuję programowo dowiedzieć się, dla których aplikacji wyjątkowo pominięto ustawienie Nie przeszkadzać.Jak znaleźć aplikacje dozwolone w obszarze "Powiadomienia o priorytetowych aplikacjach" w ustawieniu Nie przeszkadzać?
tej pory używam następujący kod, aby sprawdzić, czy telefon jest ustawiony w pracy w trybie lub nie nie przeszkadzać:
public static boolean isDnDModeEnabled(Context context)
{
if(Build.VERSION.SDK_INT <23)
return false;
try {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
int filterValue = notificationManager.getCurrentInterruptionFilter();
switch(filterValue)
{
case NotificationManager.INTERRUPTION_FILTER_ALL : Log.d("DND","Interruption filter all");
break;
case NotificationManager.INTERRUPTION_FILTER_ALARMS : Log.d("DND","Interruption filter alarms");
break;
case NotificationManager.INTERRUPTION_FILTER_PRIORITY : Log.d("DND","Interruption filter priority");
break;
case NotificationManager.INTERRUPTION_FILTER_UNKNOWN : Log.d("DND","Interruption filter unknown");
break;
case NotificationManager.INTERRUPTION_FILTER_NONE : Log.d("DND","Interruption filter none");
break;
}
if(filterValue == NotificationManager.INTERRUPTION_FILTER_ALL)
return false;
else if(filterValue == NotificationManager.INTERRUPTION_FILTER_PRIORITY)
{
//Logic based on which apps are allowed as priority
return true; //or false
}
else
return true;
}
catch(Exception e)
{
return false;
}
}
Kiedy klikam na priorytetowych aplikacji notiications zakładka, otrzymuję listę wszystkich zainstalowanych aplikacji, dla których mogę wybrać, które aplikacje mają być dozwolone jako wyjątki priorytetowe.
Moje pytanie brzmi: jak programowo uzyskać listę aplikacji, które są dozwolone jako priorytetowe wyjątki dla trybu Nie przeszkadzać, a tym samym zdefiniować logikę zastępującą komentarz w powyższym kodzie? Wszelkie rozwiązania zostaną gruntownie docenione.
Jak to się mówi, że tylko aplikacje systemowe mogą uzyskać do niego dostęp? Nie dostałem części "strzeżony przez czek" – SoulRayder
@SoulRayder: sprawdź link z tekstem "strzeżony czekiem". Android zdaje sobie sprawę z tego, że niektórzy ludzie są podchwytli i będą próbować odzwierciedlić w usługach systemowych, aby uzyskać dostęp do funkcji, które nie są odpowiednio wyeksponowane, więc tworzą kontrole w usługach systemowych, które sprawdzają, czy wywoływane są tylko te aplikacje, do których można je wywoływać. Oto funkcja, która Cię zablokuje: http://androidxref.com/7.1.1_r6/xref/frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java#checkCallerIsSameApp –