Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • xynngh/YetAnotherCallBlocker
  • Vistaus/YetAnotherCallBlocker
  • sguinetti/YetAnotherCallBlocker
  • Larnicone/YetAnotherCallBlocker
  • weblate/YetAnotherCallBlocker
  • alexisirala/YetAnotherCallBlocker
  • ildaroit/YetAnotherCallBlocker
  • SajeOne1/YetAnotherCallBlocker
  • danielvanacker1/YetAnotherCallBlocker
  • joshuacox/YetAnotherCallBlocker
  • lospejos/YetAnotherCallBlocker
  • barulina.ip/YetAnotherCallBlocker
  • WexCore/YetAnotherCallBlocker
  • yacbru/YetAnotherCallBlockerRU
  • VladWinner/YetAnotherCallBlocker
  • konarev/YetAnotherCallBlocker
  • lbschenkel/YetAnotherCallBlocker
  • haygcao/YetAnotherCallBlocker
  • JimnyGitHub/YetAnotherCallBlocker
  • xdialer100/YetAnotherCallBlocker
  • alessandroste/YetAnotherCallBlocker
21 results
Show changes
Commits on Source (9)
Showing
with 214 additions and 22 deletions
...@@ -5,9 +5,10 @@ android { ...@@ -5,9 +5,10 @@ android {
defaultConfig { defaultConfig {
applicationId "dummydomain.yetanothercallblocker" applicationId "dummydomain.yetanothercallblocker"
minSdkVersion 14 minSdkVersion 14
//noinspection OldTargetApi: required for call blocking
targetSdkVersion 28 targetSdkVersion 28
versionCode 4030 versionCode 4040
versionName "0.4.3" versionName "0.4.4"
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
...@@ -36,7 +37,7 @@ dependencies { ...@@ -36,7 +37,7 @@ dependencies {
implementation 'org.slf4j:slf4j-api:1.7.30' implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'com.github.tony19:logback-android:2.0.0' implementation 'com.github.tony19:logback-android:2.0.0'
//noinspection GradleDependency: 3.12.* is the latest version compatible with Android <5 //noinspection GradleDependency: 3.12.* is the latest version compatible with Android <5
implementation 'com.squareup.okhttp3:okhttp:3.12.11' implementation 'com.squareup.okhttp3:okhttp:3.12.12'
implementation 'commons-codec:commons-codec:1.14' // beware: a version included in Android is used instead implementation 'commons-codec:commons-codec:1.14' // beware: a version included in Android is used instead
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0'
......
...@@ -95,6 +95,7 @@ public class CallReceiver extends BroadcastReceiver { ...@@ -95,6 +95,7 @@ public class CallReceiver extends BroadcastReceiver {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try { try {
@SuppressLint("DiscouragedPrivateApi") // no choice
Method m = tm.getClass().getDeclaredMethod("getITelephony"); Method m = tm.getClass().getDeclaredMethod("getITelephony");
m.setAccessible(true); m.setAccessible(true);
ITelephony telephony = (ITelephony)m.invoke(tm); ITelephony telephony = (ITelephony)m.invoke(tm);
......
...@@ -68,7 +68,7 @@ public class DebugActivity extends AppCompatActivity { ...@@ -68,7 +68,7 @@ public class DebugActivity extends AppCompatActivity {
FeaturedDatabaseItem featuredItem = DatabaseSingleton.getFeaturedDatabase() FeaturedDatabaseItem featuredItem = DatabaseSingleton.getFeaturedDatabase()
.getDbItemByNumber(getNumber()); .getDbItemByNumber(getNumber());
return new Pair(item, featuredItem); return new Pair<>(item, featuredItem);
} }
@Override @Override
......
package dummydomain.yetanothercallblocker; package dummydomain.yetanothercallblocker;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
...@@ -12,6 +13,7 @@ public class EventHandler { ...@@ -12,6 +13,7 @@ public class EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(EventHandler.class); private static final Logger LOG = LoggerFactory.getLogger(EventHandler.class);
@SuppressLint("StaticFieldLeak") // same lifecycle
private static EventHandler instance; private static EventHandler instance;
private Context context; private Context context;
......
...@@ -8,7 +8,6 @@ import androidx.annotation.ColorRes; ...@@ -8,7 +8,6 @@ import androidx.annotation.ColorRes;
import androidx.annotation.DrawableRes; import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatImageView; import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.widget.ImageViewCompat; import androidx.core.widget.ImageViewCompat;
import dummydomain.yetanothercallblocker.data.NumberInfo; import dummydomain.yetanothercallblocker.data.NumberInfo;
...@@ -34,7 +33,7 @@ class IconAndColor { ...@@ -34,7 +33,7 @@ class IconAndColor {
@ColorInt @ColorInt
int getColorInt(@NonNull Context context) { int getColorInt(@NonNull Context context) {
return ResourcesCompat.getColor(context.getResources(), colorResId, context.getTheme()); return UiUtils.getColorInt(context, colorResId);
} }
void setOnImageView(AppCompatImageView imageView) { void setOnImageView(AppCompatImageView imageView) {
......
...@@ -165,7 +165,7 @@ public class NotificationHelper { ...@@ -165,7 +165,7 @@ public class NotificationHelper {
NotificationCompat.Builder builder = new NotificationCompat.Builder( NotificationCompat.Builder builder = new NotificationCompat.Builder(
context, CHANNEL_ID_BLOCKED_INFO) context, CHANNEL_ID_BLOCKED_INFO)
.setSmallIcon(R.drawable.ic_brick_24dp) .setSmallIcon(R.drawable.ic_brick_24dp)
.setColor(context.getResources().getColor(R.color.rateNegative)) .setColor(UiUtils.getColorInt(context, R.color.rateNegative))
.setContentTitle(title) .setContentTitle(title)
.setContentText(text) .setContentText(text)
.setPriority(NotificationCompat.PRIORITY_DEFAULT) .setPriority(NotificationCompat.PRIORITY_DEFAULT)
......
package dummydomain.yetanothercallblocker;
import android.content.Context;
import androidx.annotation.ColorInt;
import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat;
public class UiUtils {
@ColorInt
public static int getColorInt(@NonNull Context context, @ColorRes int colorResId) {
return ResourcesCompat.getColor(context.getResources(), colorResId, context.getTheme());
}
}
package dummydomain.yetanothercallblocker.work; package dummydomain.yetanothercallblocker.work;
import android.content.Context; import android.content.Context;
import android.os.Build;
import androidx.work.Constraints; import androidx.work.Constraints;
import androidx.work.NetworkType; import androidx.work.NetworkType;
...@@ -47,20 +48,22 @@ public class UpdateScheduler { ...@@ -47,20 +48,22 @@ public class UpdateScheduler {
getWorkManager().enqueue(updateRequest); getWorkManager().enqueue(updateRequest);
constraints = new Constraints.Builder() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
.setRequiredNetworkType(NetworkType.UNMETERED) constraints = new Constraints.Builder()
.setRequiresBatteryNotLow(true) .setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresDeviceIdle(true) .setRequiresBatteryNotLow(true)
.build(); .setRequiresDeviceIdle(true)
.build();
updateRequest =
new PeriodicWorkRequest.Builder(UpdateWorker.class, 6, TimeUnit.HOURS) updateRequest =
.addTag(AUTO_UPDATE_WORK_TAG) new PeriodicWorkRequest.Builder(UpdateWorker.class, 6, TimeUnit.HOURS)
.setInitialDelay(6, TimeUnit.HOURS) .addTag(AUTO_UPDATE_WORK_TAG)
.setConstraints(constraints) .setInitialDelay(6, TimeUnit.HOURS)
.build(); .setConstraints(constraints)
.build();
getWorkManager().enqueue(updateRequest);
getWorkManager().enqueue(updateRequest);
}
} }
public void cancelAutoUpdateWorker() { public void cancelAutoUpdateWorker() {
......
<resources>
<string name="app_name">Yet Another Call Blocker</string>
<string name="notification_channel_group_name_incoming_calls">Llamadas entrantes</string>
<string name="notification_channel_group_name_blocked_calls">Llamadas bloqueadas</string>
<string name="notification_channel_group_name_tasks">Tareas</string>
<string name="notification_channel_name_known">Llamadas conocidas</string>
<string name="notification_channel_name_positive">Llamadas positivas</string>
<string name="notification_channel_name_neutral">Llamadas neutrales</string>
<string name="notification_channel_name_unknown">Llamadas desconocidas</string>
<string name="notification_channel_name_negative">Llamadas negativas</string>
<string name="notification_channel_name_blocked_info">Información del bloqueo</string>
<string name="notification_channel_name_tasks">Tareas</string>
<string name="notification_incoming_call_contact">Contacto</string>
<string name="notification_incoming_call_positive">Llamada positiva</string>
<string name="notification_incoming_call_neutral">Llamada neutral</string>
<string name="notification_incoming_call_unknown">Llamada desconocida</string>
<string name="notification_incoming_call_negative">Llamada negativa</string>
<string name="notification_blocked_call">Llamada bloqueada</string>
<string name="notification_incoming_call_text_description">Negativo: %1$d, positivo: %2$d, neutral: %3$d</string>
<string name="notification_background_operation">Realizando una operación de fondo…</string>
<string name="sia_category_none">Ninguno</string>
<string name="sia_category_telemarketer">Telemercadeo</string>
<string name="sia_category_dept_collector">Colector de deudas</string>
<string name="sia_category_silent">Silencio</string>
<string name="sia_category_nuisance">Mantenimiento</string>
<string name="sia_category_unsolicited">No solicitado</string>
<string name="sia_category_call_center">Centro de llamadas</string>
<string name="sia_category_fax">FAX</string>
<string name="sia_category_nonprofit">Organización sin fines de lucro</string>
<string name="sia_category_political">Político</string>
<string name="sia_category_scam">Scam</string>
<string name="sia_category_prank">Broma</string>
<string name="sia_category_sms">SMS</string>
<string name="sia_category_survey">Encuesta</string>
<string name="sia_category_other">Otro</string>
<string name="sia_category_financial_service">Servicio financiero</string>
<string name="sia_category_company">Compañía</string>
<string name="sia_category_service">Servicio</string>
<string name="sia_category_robocall">Robocall</string>
<string name="sia_category_safe_personal">Seguro personal</string>
<string name="sia_category_safe_company">Compañía segura</string>
<string name="sia_category_safe_nonprofit">Seguro sin fines de lucro</string>
<string name="title_activity_reviews">Revisiones</string>
<string name="reviews_loading">Cargando críticas…</string>
<string name="denied_permissions_message">Debido a la denegación de los permisos, las siguientes características pueden no funcionar:</string>
<string name="feature_info">notificaciones</string>
<string name="feature_call_blocking">bloqueo de llamadas</string>
<string name="feature_contacts">uso de contactos</string>
<string name="call_log_permission_message">Concede el permiso \"Teléfono\" para ver las llamadas recientes</string>
<string name="no_main_db_title">Descargar base de datos principal</string>
<string name="no_main_db_text">La base de datos no está presente. Para que la aplicación realice la mayor parte de sus funciones necesitas descargar la base de datos. Tomará alrededor de 25 MB de tráfico.</string>
<string name="download_main_db">Descargar base de datos</string>
<string name="main_db_downloading">Descargando DB…</string>
<string name="secondary_db_updating">Actualizando DB…</string>
<string name="recent_calls">Llamadas recientes</string>
<string name="online_reviews">Revisiones en línea</string>
<string name="back">Atrás</string>
<string name="no">No</string>
<string name="load_reviews_confirmation_title">¿Estás seguro?</string>
<string name="load_reviews_confirmation_message">Cargar las revisiones online filtrará el número a un servicio de terceros. ¿Estás seguro de que quieres hacerlo con un número presente en tus contactos?</string>
<string name="open_settings_activity">Ajustes</string>
<string name="title_settings_activity">Ajustes</string>
<string name="settings_category_main">Inicio</string>
<string name="settings_category_notifications_incoming_calls">Notificaciones de llamadas entrantes</string>
<string name="show_notifications_for_known_callers">Notificaciones de llamadas conocidas</string>
<string name="show_notifications_for_known_callers_summary">Mostrar notificaciones de llamadas conocidas (números en Contactos)</string>
<string name="show_notifications_for_unknown_callers">Notificaciones de llamadas desconocidas</string>
<string name="show_notifications_for_unknown_callers_summary">Notificaciones de llamadas desconocidas (ni en Contactos ni en la base de datos de números)</string>
<string name="incoming_call_notifications">Notificaciones de llamadas entrantes</string>
<string name="incoming_call_notifications_summary">Muestra una notificación con el resumen del número de teléfono (clasificación, recuento de revisiones, categoría) durante las llamadas entrantes</string>
<string name="block_calls">Bloqueo de llamadas no deseadas</string>
<string name="block_calls_summary">Automáticamente bloquea las llamadas con calificación negativa</string>
<string name="auto_updates">Base de datos de actualización automática</string>
<string name="auto_updates_summary">Automáticamente recibe actualizaciones diarias de la BD (estas son actualizaciones incrementales/delta, por lo que consumen muy poco tráfico)</string>
<string name="use_contacts">Usar contactos</string>
<string name="use_contacts_summary">Los números presentes en la guía telefónica nunca se bloquean y el nombre del contacto aparece junto a/en lugar de un número en toda la aplicación</string>
<string name="open_debug_activity">Abrir pantalla de depuración</string>
<string name="debug_activity_label">Depurar</string>
<string name="debug_query_db">Consulta DB</string>
<string name="debug_load_reviews">Cargar reseñas (online)</string>
<string name="debug_db_info">Información de DB</string>
<string name="debug_update_db">Actualizar DB</string>
<string name="debug_not_found">No encontrado</string>
<string name="debug_update_result">Actualización terminada; DB ver: %d</string>
</resources>
\ No newline at end of file
...@@ -7,6 +7,5 @@ ...@@ -7,6 +7,5 @@
<color name="ratePositive">#679f41</color> <color name="ratePositive">#679f41</color>
<color name="rateNeutral">#ffb300</color> <color name="rateNeutral">#ffb300</color>
<color name="rateNegative">#d40000</color> <color name="rateNegative">#d40000</color>
<color name="rateUnknown">#999999</color>
<color name="notFound">#999999</color> <color name="notFound">#999999</color>
</resources> </resources>
* Added Spanish translation thanks to Diego Sanguinetti (@sguinetti).
* Small fixes.
0.4.3:
* Fixed notification actions.
0.4.2:
* Added Dutch translation thanks to Heimen Stoffels (@Vistaus).
* Fixed incoming call notifications not being removed on some devices.
* Added options to disable some of the notifications on older devices.
* Other small improvements.
0.4.1:
* New app icon.
* Display number category on the number info screen.
* Changed icon and color of blocked call notification.
Una simple aplicación de bloqueo de llamadas que le ayudará a evitar responder a llamadas no deseadas
usando una base de datos de números de teléfono fuera de línea.
Características:
* Utiliza una base de datos de números de teléfono sin conexión.
* Bloquea automáticamente las llamadas no deseadas (opcional).
* Muestra una notificación con el resumen del número de teléfono (clasificación, recuento de revisiones, categoría) durante las llamadas entrantes (opcional).
* Actualizaciones automáticas de la base de datos incremental/delta (opcional).
* Puede ver revisiones en línea del número de la persona que llama (proporcionado por un servicio de terceros).
Cómo utilizarlo:
* Instale e inicie la aplicación.
* La opción de mostrar notificaciones de información de la persona que llama está activada de forma predeterminada, por lo que la aplicación solicitará permisos relacionados con el teléfono.
* En el primer inicio, la aplicación sugerirá que se descargue la base de datos principal que se requiere para la mayoría de las funciones. Simplemente confirme la descarga.
* Marque la casilla "Auto-actualización de la base de datos" en el menú (recomendado) para recibir automáticamente las actualizaciones diarias de la base de datos (estas son actualizaciones incrementales/delta, por lo que consumen muy poco tráfico).
* Marque la casilla "Bloquear llamadas no deseadas" para bloquear automáticamente las llamadas con calificación negativa.
* También puede marcar la casilla de verificación "Usar contactos" si desea que sus contactos no sean tratados como llamadas desconocidas.
* Después de estos pasos todo debería funcionar. ¡Disfrútalo!
La base de datos de números telefónicos principales se descarga de un repositorio de Gitlab.
Las actualizaciones delta y las consultas de revisión detallada se realizan utilizando servidores de terceros.
No se envía ninguna información identificable por el usuario (excepto el número de teléfono que será cargada para las reseñas).
Otro bloqueador de llamadas está aún en desarrollo. Cualquier ayuda es muy bienvenida.
''NonFreeNet:'' el servicio de terceros no es de código abierto.
Bloquear las llamadas no deseadas sin esfuerzo
Yet Another Call Blocker
* Добавлен испанский перевод, спасибо Diego Sanguinetti (@sguinetti).
* Небольшие исправления.
0.4.3:
* Исправлены действия из уведомлений.
0.4.2:
* Добавлен нидерландский перевод, спасибо Heimen Stoffels (@Vistaus).
* Исправлено сокрытие уведомлений на некоторых устройствах.
* Добавлены опции выключения некоторых уведомлений на старых устройствах.
* Другие небольшие улучшения.
0.4.1:
* Новая иконка приложения.
* Отображение категории на экран информации о номере.
* Изменена иконка и цвет уведомления о блокированном вызове.