Update call log when call ends
This commit is contained in:
parent
e22aa92525
commit
ace3f05ed7
|
@ -17,9 +17,14 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
import dummydomain.yetanothercallblocker.event.CallEndedEvent;
|
||||||
|
import dummydomain.yetanothercallblocker.event.CallOngoingEvent;
|
||||||
|
import dummydomain.yetanothercallblocker.event.CallStartedEvent;
|
||||||
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
||||||
import dummydomain.yetanothercallblocker.sia.model.NumberInfo;
|
import dummydomain.yetanothercallblocker.sia.model.NumberInfo;
|
||||||
|
|
||||||
|
import static dummydomain.yetanothercallblocker.EventUtils.postEvent;
|
||||||
|
|
||||||
public class CallReceiver extends BroadcastReceiver {
|
public class CallReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(CallReceiver.class);
|
private static final Logger LOG = LoggerFactory.getLogger(CallReceiver.class);
|
||||||
|
@ -37,9 +42,12 @@ public class CallReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(telephonyExtraState)) {
|
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(telephonyExtraState)) {
|
||||||
isOnCall = true;
|
isOnCall = true;
|
||||||
|
postEvent(new CallOngoingEvent());
|
||||||
} else if (TelephonyManager.EXTRA_STATE_RINGING.equals(telephonyExtraState)) {
|
} else if (TelephonyManager.EXTRA_STATE_RINGING.equals(telephonyExtraState)) {
|
||||||
if (incomingNumber == null) return;
|
if (incomingNumber == null) return;
|
||||||
|
|
||||||
|
postEvent(new CallStartedEvent());
|
||||||
|
|
||||||
Settings settings = App.getSettings();
|
Settings settings = App.getSettings();
|
||||||
|
|
||||||
boolean blockCalls = settings.getBlockCalls();
|
boolean blockCalls = settings.getBlockCalls();
|
||||||
|
@ -55,6 +63,7 @@ public class CallReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
if (blocked) {
|
if (blocked) {
|
||||||
NotificationHelper.showBlockedCallNotification(context, numberInfo);
|
NotificationHelper.showBlockedCallNotification(context, numberInfo);
|
||||||
|
postEvent(new CallEndedEvent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +74,7 @@ public class CallReceiver extends BroadcastReceiver {
|
||||||
} else if(TelephonyManager.EXTRA_STATE_IDLE.equals(telephonyExtraState)) {
|
} else if(TelephonyManager.EXTRA_STATE_IDLE.equals(telephonyExtraState)) {
|
||||||
isOnCall = false;
|
isOnCall = false;
|
||||||
NotificationHelper.hideIncomingCallNotification(context, incomingNumber);
|
NotificationHelper.hideIncomingCallNotification(context, incomingNumber);
|
||||||
|
postEvent(new CallEndedEvent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package dummydomain.yetanothercallblocker;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
|
public class EventUtils {
|
||||||
|
|
||||||
|
public static void postEvent(Object event) {
|
||||||
|
bus().post(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void postStickyEvent(Object event) {
|
||||||
|
bus().postSticky(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeStickyEvent(Object event) {
|
||||||
|
bus().removeStickyEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static EventBus bus() {
|
||||||
|
return EventBus.getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import android.annotation.SuppressLint;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -23,6 +24,7 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import dummydomain.yetanothercallblocker.event.CallEndedEvent;
|
||||||
import dummydomain.yetanothercallblocker.event.MainDbDownloadFinishedEvent;
|
import dummydomain.yetanothercallblocker.event.MainDbDownloadFinishedEvent;
|
||||||
import dummydomain.yetanothercallblocker.event.MainDbDownloadingEvent;
|
import dummydomain.yetanothercallblocker.event.MainDbDownloadingEvent;
|
||||||
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
||||||
|
@ -112,6 +114,11 @@ public class MainActivity extends AppCompatActivity {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
|
||||||
|
public void onCallEvent(CallEndedEvent event) {
|
||||||
|
new Handler(getMainLooper()).postDelayed(this::loadCallLog, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
|
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
|
||||||
public void onMainDbDownloadFinished(MainDbDownloadFinishedEvent event) {
|
public void onMainDbDownloadFinished(MainDbDownloadFinishedEvent event) {
|
||||||
loadCallLog();
|
loadCallLog();
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
package dummydomain.yetanothercallblocker.event;
|
||||||
|
|
||||||
|
public class CallEndedEvent extends CallEvent {}
|
|
@ -0,0 +1,3 @@
|
||||||
|
package dummydomain.yetanothercallblocker.event;
|
||||||
|
|
||||||
|
public class CallEvent {}
|
|
@ -0,0 +1,3 @@
|
||||||
|
package dummydomain.yetanothercallblocker.event;
|
||||||
|
|
||||||
|
public class CallOngoingEvent extends CallEvent {}
|
|
@ -0,0 +1,3 @@
|
||||||
|
package dummydomain.yetanothercallblocker.event;
|
||||||
|
|
||||||
|
public class CallStartedEvent extends CallEvent {}
|
|
@ -12,7 +12,6 @@ import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -25,6 +24,10 @@ import dummydomain.yetanothercallblocker.event.SecondaryDbUpdatingEvent;
|
||||||
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
import dummydomain.yetanothercallblocker.sia.DatabaseSingleton;
|
||||||
import dummydomain.yetanothercallblocker.sia.model.database.DbManager;
|
import dummydomain.yetanothercallblocker.sia.model.database.DbManager;
|
||||||
|
|
||||||
|
import static dummydomain.yetanothercallblocker.EventUtils.postEvent;
|
||||||
|
import static dummydomain.yetanothercallblocker.EventUtils.postStickyEvent;
|
||||||
|
import static dummydomain.yetanothercallblocker.EventUtils.removeStickyEvent;
|
||||||
|
|
||||||
public class TaskService extends IntentService {
|
public class TaskService extends IntentService {
|
||||||
|
|
||||||
public static final String TASK_DOWNLOAD_MAIN_DB = "download_main_db";
|
public static final String TASK_DOWNLOAD_MAIN_DB = "download_main_db";
|
||||||
|
@ -95,45 +98,29 @@ public class TaskService extends IntentService {
|
||||||
private void downloadMainDb() {
|
private void downloadMainDb() {
|
||||||
MainDbDownloadingEvent sticky = new MainDbDownloadingEvent();
|
MainDbDownloadingEvent sticky = new MainDbDownloadingEvent();
|
||||||
|
|
||||||
postSticky(sticky);
|
postStickyEvent(sticky);
|
||||||
try {
|
try {
|
||||||
DbManager.downloadMainDb();
|
DbManager.downloadMainDb();
|
||||||
DatabaseSingleton.getCommunityDatabase().reload();
|
DatabaseSingleton.getCommunityDatabase().reload();
|
||||||
DatabaseSingleton.getFeaturedDatabase().reload();
|
DatabaseSingleton.getFeaturedDatabase().reload();
|
||||||
} finally {
|
} finally {
|
||||||
removeSticky(sticky);
|
removeStickyEvent(sticky);
|
||||||
}
|
}
|
||||||
|
|
||||||
post(new MainDbDownloadFinishedEvent());
|
postEvent(new MainDbDownloadFinishedEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSecondaryDb() {
|
private void updateSecondaryDb() {
|
||||||
SecondaryDbUpdatingEvent sticky = new SecondaryDbUpdatingEvent();
|
SecondaryDbUpdatingEvent sticky = new SecondaryDbUpdatingEvent();
|
||||||
|
|
||||||
postSticky(sticky);
|
postStickyEvent(sticky);
|
||||||
try {
|
try {
|
||||||
DatabaseSingleton.getCommunityDatabase().updateSecondaryDb();
|
DatabaseSingleton.getCommunityDatabase().updateSecondaryDb();
|
||||||
} finally {
|
} finally {
|
||||||
removeSticky(sticky);
|
removeStickyEvent(sticky);
|
||||||
}
|
}
|
||||||
|
|
||||||
post(new SecondaryDbUpdateFinished());
|
postEvent(new SecondaryDbUpdateFinished());
|
||||||
}
|
|
||||||
|
|
||||||
private void post(Object event) {
|
|
||||||
bus().post(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void postSticky(Object event) {
|
|
||||||
bus().postSticky(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void removeSticky(Object event) {
|
|
||||||
bus().removeStickyEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private EventBus bus() {
|
|
||||||
return EventBus.getDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue