mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-25 10:05:49 +01:00
Fixed things based on feedback
This commit is contained in:
parent
8a91628322
commit
31eabe9605
@ -1,6 +1,7 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge;
|
||||
|
||||
import android.app.Application;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.NotificationManager.Policy;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@ -13,7 +14,6 @@ import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Build.VERSION;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.provider.ContactsContract;
|
||||
import android.provider.ContactsContract.PhoneLookup;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.util.Log;
|
||||
@ -64,6 +64,7 @@ public class GBApplication extends Application {
|
||||
private static Appender<ILoggingEvent> fileLogger;
|
||||
private static Prefs prefs;
|
||||
private static GBPrefs gbPrefs;
|
||||
private static NotificationManager notificationManager;
|
||||
|
||||
public static final String ACTION_QUIT
|
||||
= "nodomain.freeyourgadget.gadgetbridge.gbapplication.action.quit";
|
||||
@ -124,6 +125,10 @@ public class GBApplication extends Application {
|
||||
filterLocal.addAction(ACTION_QUIT);
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
|
||||
|
||||
if (isRunningMarshmallowOrLater()) {
|
||||
notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
}
|
||||
|
||||
// for testing DB stuff
|
||||
// SQLiteDatabase db = mActivityDatabaseHandler.getWritableDatabase();
|
||||
// db.close();
|
||||
@ -256,37 +261,57 @@ public class GBApplication extends Application {
|
||||
return VERSION.SDK_INT >= Build.VERSION_CODES.M;
|
||||
}
|
||||
|
||||
public static boolean isPriorityNumber(int prioritySenders, String number) {
|
||||
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||
String[] projection = new String[]{PhoneLookup._ID, PhoneLookup.STARRED};
|
||||
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
|
||||
boolean exists = false;
|
||||
int starred = 0;
|
||||
try {
|
||||
if (cursor.moveToFirst()) {
|
||||
exists = true;
|
||||
starred = cursor.getInt(cursor.getColumnIndexOrThrow(PhoneLookup.STARRED));
|
||||
private static boolean isPrioritySender(int prioritySenders, String number) {
|
||||
if (prioritySenders == Policy.PRIORITY_SENDERS_ANY) {
|
||||
return true;
|
||||
} else {
|
||||
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||
String[] projection = new String[]{PhoneLookup._ID, PhoneLookup.STARRED};
|
||||
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
|
||||
boolean exists = false;
|
||||
int starred = 0;
|
||||
try {
|
||||
if (cursor.moveToFirst()) {
|
||||
exists = true;
|
||||
starred = cursor.getInt(cursor.getColumnIndexOrThrow(PhoneLookup.STARRED));
|
||||
}
|
||||
} finally {
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
switch (prioritySenders) {
|
||||
case Policy.PRIORITY_SENDERS_ANY:
|
||||
if (prioritySenders == Policy.PRIORITY_SENDERS_CONTACTS && exists) {
|
||||
return true;
|
||||
case Policy.PRIORITY_SENDERS_CONTACTS:
|
||||
if (exists) {
|
||||
return true;
|
||||
}
|
||||
case Policy.PRIORITY_SENDERS_STARRED:
|
||||
if (PhoneLookup.STARRED.equals(starred)) {
|
||||
return true;
|
||||
}
|
||||
} else if (prioritySenders == Policy.PRIORITY_SENDERS_STARRED && starred == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isPriorityNumber(int priorityType, String number) {
|
||||
NotificationManager.Policy notificationPolicy = notificationManager.getNotificationPolicy();
|
||||
if(priorityType == Policy.PRIORITY_CATEGORY_MESSAGES) {
|
||||
if ((notificationPolicy.priorityCategories & Policy.PRIORITY_CATEGORY_MESSAGES) == Policy.PRIORITY_CATEGORY_MESSAGES) {
|
||||
return isPrioritySender(notificationPolicy.priorityMessageSenders, number);
|
||||
}
|
||||
} else if (priorityType == Policy.PRIORITY_CATEGORY_CALLS) {
|
||||
if ((notificationPolicy.priorityCategories & Policy.PRIORITY_CATEGORY_CALLS) == Policy.PRIORITY_CATEGORY_CALLS) {
|
||||
return isPrioritySender(notificationPolicy.priorityCallSenders, number);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int getGrantedInterruptionFilter() {
|
||||
if (prefs.getBoolean("notification_filter", false) && GBApplication.isRunningMarshmallowOrLater()) {
|
||||
if (notificationManager.isNotificationPolicyAccessGranted()) {
|
||||
return notificationManager.getCurrentInterruptionFilter();
|
||||
}
|
||||
}
|
||||
return NotificationManager.INTERRUPTION_FILTER_ALL;
|
||||
}
|
||||
|
||||
public static HashSet<String> blacklist = null;
|
||||
|
||||
private static void loadBlackList() {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.activities;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
@ -10,7 +9,6 @@ import android.preference.Preference;
|
||||
import android.preference.PreferenceCategory;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.widget.Toast;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
@ -34,16 +34,13 @@ public class K9Receiver extends BroadcastReceiver {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (prefs.getBoolean("notification_filter", false) && GBApplication.isRunningMarshmallowOrLater()) {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
if (notificationManager.isNotificationPolicyAccessGranted()) {
|
||||
switch (notificationManager.getCurrentInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
return;
|
||||
}
|
||||
}
|
||||
switch (GBApplication.getGrantedInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALL:
|
||||
break;
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
return;
|
||||
}
|
||||
|
||||
String uriWanted = intent.getData().toString();
|
||||
|
@ -168,18 +168,15 @@ public class NotificationListener extends NotificationListenerService {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (prefs.getBoolean("notification_filter", false) && GBApplication.isRunningMarshmallowOrLater()) {
|
||||
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
if (notificationManager.isNotificationPolicyAccessGranted()) {
|
||||
switch (notificationManager.getCurrentInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
// FIXME: Handle Reminders and Events if they are enabled in Do Not Disturb
|
||||
return;
|
||||
}
|
||||
}
|
||||
switch (GBApplication.getGrantedInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALL:
|
||||
break;
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
// FIXME: Handle Reminders and Events if they are enabled in Do Not Disturb
|
||||
return;
|
||||
}
|
||||
|
||||
String source = sbn.getPackageName();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.externalevents;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.app.NotificationManager.Policy;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@ -68,22 +69,18 @@ public class PhoneCallReceiver extends BroadcastReceiver {
|
||||
if ("never".equals(prefs.getString("notification_mode_calls", "always"))) {
|
||||
return;
|
||||
}
|
||||
if (prefs.getBoolean("notification_filter", false) && GBApplication.isRunningMarshmallowOrLater()) {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
if (notificationManager.isNotificationPolicyAccessGranted()) {
|
||||
switch (notificationManager.getCurrentInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
NotificationManager.Policy notificationPolicy = notificationManager.getNotificationPolicy();
|
||||
if (!GBApplication.isPriorityNumber(notificationPolicy.priorityCallSenders, mSavedNumber)) {
|
||||
return;
|
||||
}
|
||||
// FIXME: Handle Repeat callers if it is enabled in Do Not Disturb
|
||||
break;
|
||||
switch (GBApplication.getGrantedInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALL:
|
||||
break;
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
if (GBApplication.isPriorityNumber(Policy.PRIORITY_CATEGORY_CALLS, mSavedNumber)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// FIXME: Handle Repeat callers if it is enabled in Do Not Disturb
|
||||
return;
|
||||
}
|
||||
CallSpec callSpec = new CallSpec();
|
||||
callSpec.number = mSavedNumber;
|
||||
|
@ -1,13 +1,13 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.externalevents;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.app.NotificationManager.Policy;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.telephony.SmsMessage;
|
||||
import android.util.Log;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
||||
@ -43,21 +43,17 @@ public class SMSReceiver extends BroadcastReceiver {
|
||||
notificationSpec.body = message.getDisplayMessageBody();
|
||||
notificationSpec.phoneNumber = message.getOriginatingAddress();
|
||||
if (notificationSpec.phoneNumber != null) {
|
||||
if (prefs.getBoolean("notification_filter", false) && GBApplication.isRunningMarshmallowOrLater()) {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
if (notificationManager.isNotificationPolicyAccessGranted()) {
|
||||
switch (notificationManager.getCurrentInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
NotificationManager.Policy notificationPolicy = notificationManager.getNotificationPolicy();
|
||||
if (!GBApplication.isPriorityNumber(notificationPolicy.priorityMessageSenders, notificationSpec.phoneNumber)) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
switch (GBApplication.getGrantedInterruptionFilter()) {
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALL:
|
||||
break;
|
||||
case NotificationManager.INTERRUPTION_FILTER_ALARMS:
|
||||
case NotificationManager.INTERRUPTION_FILTER_NONE:
|
||||
return;
|
||||
case NotificationManager.INTERRUPTION_FILTER_PRIORITY:
|
||||
if (GBApplication.isPriorityNumber(Policy.PRIORITY_CATEGORY_MESSAGES, notificationSpec.phoneNumber)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
GBApplication.deviceService().onNotification(notificationSpec);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user