Remove missed call functionality

This feature violates impending Google Play Developer policy change:
https://android-developers.googleblog.com/2018/10/providing-safe-and-secure-experience.html
pull/757/head
Alex Baker 6 years ago
parent bffd683e03
commit 4aab081f6c

@ -33,9 +33,4 @@ public class PermissivePermissionChecker extends PermissionChecker {
public boolean canAccessMic() {
return true;
}
@Override
public boolean canAccessMissedCallPermissions() {
return true;
}
}

@ -30,13 +30,6 @@
<!-- **************************************** -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- ********************* -->
<!-- missed call reminders -->
<!-- ********************* -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- ******************************************* -->
<!-- scheduling reminders after rebooting device -->
<!-- ******************************************* -->
@ -210,12 +203,6 @@
android:resource="@xml/scrollable_widget_provider_info"/>
</receiver>
<receiver android:name="com.todoroo.astrid.calls.PhoneStateChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
<!-- ======================================================== Services = -->
<service
@ -263,13 +250,6 @@
android:name="com.todoroo.astrid.activity.BeastModePreferences"
android:theme="@style/Tasks"/>
<activity
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:name=".reminders.MissedCallActivity"
android:taskAffinity=""
android:theme="@style/TranslucentDialog"/>
<activity
android:excludeFromRecents="true"
android:launchMode="singleTask"

@ -175,10 +175,6 @@ public class AndroidUtilities {
return !atLeastLollipop();
}
public static boolean preJellybean() {
return !atLeastJellybean();
}
public static boolean preOreo() {
return !atLeastOreo();
}

@ -1,265 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* <p>See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.calls;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.annotation.SuppressLint;
import android.app.PendingIntent;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract;
import android.support.v4.app.NotificationCompat;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import java.io.InputStream;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.injection.BroadcastComponent;
import org.tasks.injection.ForApplication;
import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.Preferences;
import org.tasks.reminders.MissedCallActivity;
import timber.log.Timber;
public class PhoneStateChangedReceiver extends InjectingBroadcastReceiver {
private static final String PREF_LAST_INCOMING_NUMBER = "last_incoming_number";
private static final long WAIT_BEFORE_READ_LOG = 3000L;
@Inject Preferences preferences;
@Inject NotificationManager notificationManager;
@Inject PermissionChecker permissionChecker;
@Inject @ForApplication Context context;
@Override
public void onReceive(final Context context, Intent intent) {
super.onReceive(context, intent);
if (!intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
return;
}
if (!preferences.fieldMissedPhoneCalls()) {
preferences.clear(PREF_LAST_INCOMING_NUMBER);
return;
}
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
String number = digitsOnly(intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER));
if (TextUtils.isEmpty(number)) {
return;
}
preferences.setString(PREF_LAST_INCOMING_NUMBER, number);
} else if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {
final String lastNumber = preferences.getStringValue(PREF_LAST_INCOMING_NUMBER);
if (TextUtils.isEmpty(lastNumber)) {
return;
}
preferences.clear(PREF_LAST_INCOMING_NUMBER);
new Thread() {
@Override
public void run() {
AndroidUtilities.sleepDeep(WAIT_BEFORE_READ_LOG);
Cursor calls;
try {
calls = getMissedCalls();
} catch (Exception e) { // Sometimes database is locked, retry once
Timber.e(e);
AndroidUtilities.sleepDeep(300L);
try {
calls = getMissedCalls();
} catch (Exception e2) {
Timber.e(e2);
calls = null;
}
}
try {
if (calls == null) {
return;
}
if (calls.moveToFirst()) {
int numberIndex = calls.getColumnIndex(Calls.NUMBER);
String number = calls.getString(numberIndex);
// Sanity check for phone number match
// in case the phone logs haven't updated for some reaosn
if (!lastNumber.equals(digitsOnly(number))) {
return;
}
// If a lot of time has passed since the most recent missed call, ignore
// It could be the same person calling you back before you call them back,
// but if you answer this time, the missed call will still be in the database
// and will be processed again.
int dateIndex = calls.getColumnIndex(Calls.DATE);
long date = calls.getLong(dateIndex);
if (DateUtilities.now() - date > 2 * DateUtilities.ONE_MINUTE) {
return;
}
int nameIndex = calls.getColumnIndex(Calls.CACHED_NAME);
String name = calls.getString(nameIndex);
long contactId = getContactIdFromNumber(context, number);
triggerMissedCallNotification(name, number, contactId);
}
} catch (Exception e) {
Timber.e(e);
} finally {
if (calls != null) {
calls.close();
}
}
}
}.start();
}
}
@SuppressLint("MissingPermission")
private Cursor getMissedCalls() {
if (permissionChecker.canAccessMissedCallPermissions()) {
//noinspection MissingPermission
return context
.getContentResolver()
.query(
Calls.CONTENT_URI,
new String[] {Calls.NUMBER, Calls.DATE, Calls.CACHED_NAME},
Calls.TYPE + " = ? AND " + Calls.NEW + " = ?",
new String[] {Integer.toString(Calls.MISSED_TYPE), "1"},
Calls.DATE + " DESC");
}
return null;
}
@Override
protected void inject(BroadcastComponent component) {
component.inject(this);
}
private String digitsOnly(String number) {
if (number == null) {
return "";
}
StringBuilder builder = new StringBuilder();
for (int i = 0; i < number.length(); i++) {
char c = number.charAt(i);
if (Character.isDigit(c)) {
builder.append(c);
}
}
return builder.toString();
}
private long getContactIdFromNumber(Context context, String number) {
Uri contactUri =
Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
Cursor c =
context
.getContentResolver()
.query(contactUri, new String[] {ContactsContract.PhoneLookup._ID}, null, null, null);
try {
if (c.moveToFirst()) {
return c.getLong(c.getColumnIndex(ContactsContract.PhoneLookup._ID));
}
} finally {
c.close();
}
return -1;
}
private void triggerMissedCallNotification(
final String name, final String number, long contactId) {
final String title =
context.getString(R.string.missed_call, TextUtils.isEmpty(name) ? number : name);
Intent missedCallDialog = new Intent(context, MissedCallActivity.class);
missedCallDialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
missedCallDialog.putExtra(MissedCallActivity.EXTRA_NUMBER, number);
missedCallDialog.putExtra(MissedCallActivity.EXTRA_NAME, name);
missedCallDialog.putExtra(MissedCallActivity.EXTRA_TITLE, title);
NotificationCompat.Builder builder =
new NotificationCompat.Builder(context, NotificationManager.NOTIFICATION_CHANNEL_CALLS)
.setTicker(title)
.setContentTitle(title)
.setContentText(context.getString(R.string.app_name))
.setWhen(currentTimeMillis())
.setShowWhen(true)
.setSmallIcon(R.drawable.ic_check_white_24dp)
.setContentIntent(
PendingIntent.getActivity(
context,
missedCallDialog.hashCode(),
missedCallDialog,
PendingIntent.FLAG_UPDATE_CURRENT));
Bitmap contactImage = getContactImage(contactId);
if (contactImage != null) {
builder.setLargeIcon(contactImage);
}
Intent callNow = new Intent(context, MissedCallActivity.class);
callNow.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callNow.putExtra(MissedCallActivity.EXTRA_NUMBER, number);
callNow.putExtra(MissedCallActivity.EXTRA_NAME, name);
callNow.putExtra(MissedCallActivity.EXTRA_TITLE, title);
callNow.putExtra(MissedCallActivity.EXTRA_CALL_NOW, true);
Intent callLater = new Intent(context, MissedCallActivity.class);
callLater.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callLater.putExtra(MissedCallActivity.EXTRA_NUMBER, number);
callLater.putExtra(MissedCallActivity.EXTRA_NAME, name);
callLater.putExtra(MissedCallActivity.EXTRA_TITLE, title);
callLater.putExtra(MissedCallActivity.EXTRA_CALL_LATER, true);
builder
.addAction(
R.drawable.ic_phone_white_24dp,
context.getString(R.string.MCA_return_call),
PendingIntent.getActivity(
context, callNow.hashCode(), callNow, PendingIntent.FLAG_UPDATE_CURRENT))
.addAction(
R.drawable.ic_add_white_24dp,
context.getString(R.string.MCA_add_task),
PendingIntent.getActivity(
context, callLater.hashCode(), callLater, PendingIntent.FLAG_UPDATE_CURRENT));
notificationManager.notify(number.hashCode(), builder, true, false, false);
}
private Bitmap getContactImage(long contactId) {
Bitmap b = null;
if (contactId >= 0) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
InputStream input =
ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
try {
b = BitmapFactory.decodeStream(input);
} catch (OutOfMemoryError e) {
Timber.e(e);
}
}
return b;
}
}

@ -9,7 +9,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybean;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo;
import static com.todoroo.andlib.utility.AndroidUtilities.preOreo;
import static org.tasks.PermissionUtil.verifyPermissions;
import android.annotation.TargetApi;
import android.content.Intent;
@ -18,11 +17,9 @@ import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.annotation.NonNull;
import com.todoroo.astrid.api.Filter;
import javax.inject.Inject;
import org.tasks.LocalBroadcastManager;
@ -35,7 +32,6 @@ import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Device;
import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.receivers.Badger;
import org.tasks.scheduling.GeofenceSchedulingIntentService;
import org.tasks.scheduling.NotificationSchedulerIntentService;
@ -56,8 +52,6 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
@Inject DefaultFilterProvider defaultFilterProvider;
@Inject LocalBroadcastManager localBroadcastManager;
private CheckBoxPreference fieldMissedCalls;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -72,15 +66,6 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
R.string.p_rmd_persistent);
resetGeofencesOnChange(R.string.p_geofence_radius, R.string.p_geofence_responsiveness);
fieldMissedCalls =
(CheckBoxPreference) findPreference(getString(R.string.p_field_missed_calls));
fieldMissedCalls.setOnPreferenceChangeListener(
(preference, newValue) ->
newValue != null
&& (!(boolean) newValue || permissionRequestor.requestMissedCallPermissions()));
fieldMissedCalls.setChecked(
fieldMissedCalls.isChecked() && permissionChecker.canAccessMissedCallPermissions());
initializeRingtonePreference();
initializeTimePreference(getDefaultRemindTimePreference(), REQUEST_DEFAULT_REMIND);
initializeTimePreference(getQuietStartPreference(), REQUEST_QUIET_START);
@ -171,18 +156,6 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
}
}
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PermissionRequestor.REQUEST_CONTACTS) {
if (verifyPermissions(grantResults)) {
fieldMissedCalls.setChecked(true);
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
private void initializeTimePreference(final TimePreference preference, final int requestCode) {
preference.setOnPreferenceClickListener(
ignored -> {

@ -32,7 +32,6 @@ import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.DateTimePreferences;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.MissedCallActivity;
import org.tasks.reminders.NotificationActivity;
import org.tasks.reminders.SnoozeActivity;
import org.tasks.sync.SynchronizationPreferences;
@ -80,8 +79,6 @@ public interface ActivityComponent {
void inject(SnoozeActivity snoozeActivity);
void inject(MissedCallActivity missedCallActivity);
void inject(FileExplore fileExplore);
void inject(CalendarSelectionActivity calendarSelectionActivity);

@ -1,6 +1,5 @@
package org.tasks.injection;
import com.todoroo.astrid.calls.PhoneStateChangedReceiver;
import com.todoroo.astrid.gcal.CalendarAlarmReceiver;
import dagger.Subcomponent;
import org.tasks.notifications.NotificationClearedReceiver;
@ -12,8 +11,6 @@ import org.tasks.widget.TasksWidget;
@Subcomponent(modules = BroadcastModule.class)
public interface BroadcastComponent {
void inject(PhoneStateChangedReceiver phoneStateChangedReceiver);
void inject(CalendarAlarmReceiver calendarAlarmReceiver);
void inject(MyPackageReplacedReceiver myPackageReplacedReceiver);

@ -10,7 +10,6 @@ import org.tasks.dialogs.SortDialog;
import org.tasks.gtasks.CreateListDialog;
import org.tasks.gtasks.DeleteListDialog;
import org.tasks.gtasks.RenameListDialog;
import org.tasks.reminders.MissedCallDialog;
import org.tasks.reminders.NotificationDialog;
import org.tasks.reminders.SnoozeDialog;
import org.tasks.repeats.BasicRecurrenceDialog;
@ -23,8 +22,6 @@ public interface DialogFragmentComponent {
void inject(NotificationDialog notificationDialog);
void inject(MissedCallDialog missedCallDialog);
void inject(CalendarSelectionDialog calendarSelectionDialog);
void inject(AddAttachmentDialog addAttachmentDialog);

@ -53,7 +53,6 @@ public class NotificationManager {
public static final String NOTIFICATION_CHANNEL_DEFAULT = "notifications";
public static final String NOTIFICATION_CHANNEL_TASKER = "notifications_tasker";
public static final String NOTIFICATION_CHANNEL_CALLS = "notifications_calls";
public static final String NOTIFICATION_CHANNEL_TIMERS = "notifications_timers";
static final String EXTRA_NOTIFICATION_ID = "extra_notification_id";
private static final String GROUP_KEY = "tasks";
@ -83,8 +82,6 @@ public class NotificationManager {
(android.app.NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(
createNotificationChannel(NOTIFICATION_CHANNEL_DEFAULT, R.string.notifications));
notificationManager.createNotificationChannel(
createNotificationChannel(NOTIFICATION_CHANNEL_CALLS, R.string.missed_calls));
notificationManager.createNotificationChannel(
createNotificationChannel(NOTIFICATION_CHANNEL_TASKER, R.string.tasker_locale));
notificationManager.createNotificationChannel(

@ -1,15 +1,12 @@
package org.tasks.preferences;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo;
import static com.todoroo.andlib.utility.AndroidUtilities.preJellybean;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import android.Manifest;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import java.util.List;
import javax.inject.Inject;
@ -46,13 +43,6 @@ public class PermissionChecker {
return checkPermission(Manifest.permission.RECORD_AUDIO);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public boolean canAccessMissedCallPermissions() {
return checkPermission(Manifest.permission.READ_CONTACTS)
&& checkPermission(Manifest.permission.READ_PHONE_STATE)
&& (preJellybean() || checkPermission(Manifest.permission.READ_CALL_LOG));
}
private boolean checkPermission(String permission) {
return checkPermissions(singletonList(permission));
}

@ -1,7 +1,5 @@
package org.tasks.preferences;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybean;
import android.Manifest;
public abstract class PermissionRequestor {
@ -11,7 +9,6 @@ public abstract class PermissionRequestor {
public static final int REQUEST_MIC = 52;
public static final int REQUEST_GOOGLE_ACCOUNTS = 53;
public static final int REQUEST_LOCATION = 54;
public static final int REQUEST_CONTACTS = 55;
private final PermissionChecker permissionChecker;
@ -65,24 +62,6 @@ public abstract class PermissionRequestor {
return false;
}
public boolean requestMissedCallPermissions() {
if (permissionChecker.canAccessMissedCallPermissions()) {
return true;
}
String[] permissions =
atLeastJellybean()
? new String[] {
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.READ_CALL_LOG
}
: new String[] {
Manifest.permission.READ_CONTACTS, Manifest.permission.READ_PHONE_STATE
};
requestPermissions(permissions, REQUEST_CONTACTS);
return false;
}
private void requestPermission(String permission, int rc) {
requestPermissions(new String[] {permission}, rc);
}

@ -285,16 +285,6 @@ public class Preferences {
}
}
private boolean notificationsEnabled() {
return getBoolean(R.string.p_rmd_enabled, true);
}
public boolean fieldMissedPhoneCalls() {
return getBoolean(R.string.p_field_missed_calls, true)
&& notificationsEnabled()
&& permissionChecker.canAccessMissedCallPermissions();
}
public boolean getBoolean(int keyResources, boolean defValue) {
return getBoolean(context.getString(keyResources), defValue);
}

@ -1,104 +0,0 @@
package org.tasks.reminders;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.text.TextUtils;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskCreator;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.intents.TaskIntents;
import org.tasks.notifications.NotificationManager;
public class MissedCallActivity extends InjectingAppCompatActivity
implements MissedCallDialog.MissedCallHandler {
public static final String EXTRA_NUMBER = "number"; // $NON-NLS-1$
public static final String EXTRA_NAME = "name"; // $NON-NLS-1$
public static final String EXTRA_TITLE = "extra_title";
public static final String EXTRA_CALL_NOW = "extra_call_now";
public static final String EXTRA_CALL_LATER = "extra_call_later";
private static final String FRAG_TAG_MISSED_CALL_FRAGMENT = "frag_tag_missed_call_fragment";
@Inject NotificationManager notificationManager;
@Inject TaskCreator taskCreator;
private String name;
private String number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setup(getIntent());
}
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setup(intent);
}
private void setup(Intent intent) {
name = intent.getStringExtra(EXTRA_NAME);
number = intent.getStringExtra(EXTRA_NUMBER);
if (intent.getBooleanExtra(EXTRA_CALL_NOW, false)) {
callNow();
} else if (intent.getBooleanExtra(EXTRA_CALL_LATER, false)) {
callLater();
} else {
FragmentManager fragmentManager = getSupportFragmentManager();
MissedCallDialog fragment =
(MissedCallDialog) fragmentManager.findFragmentByTag(FRAG_TAG_MISSED_CALL_FRAGMENT);
if (fragment == null) {
fragment = new MissedCallDialog();
fragment.show(fragmentManager, FRAG_TAG_MISSED_CALL_FRAGMENT);
}
fragment.setTitle(intent.getStringExtra(EXTRA_TITLE));
}
}
@Override
public void dismiss() {
finish();
}
@Override
public void callNow() {
Intent call = new Intent(Intent.ACTION_VIEW);
call.setData(Uri.parse("tel:" + number)); // $NON-NLS-1$
startActivity(call);
cancelNotificationAndFinish();
}
@Override
public void callLater() {
String title =
TextUtils.isEmpty(name)
? getString(R.string.MCA_task_title_no_name, number)
: getString(R.string.MCA_task_title_name, name, number);
Task task = taskCreator.basicQuickAddTask(title);
TaskIntents.getEditTaskStack(this, null, task.getId()).startActivities();
cancelNotificationAndFinish();
}
@Override
public void ignore() {
cancelNotificationAndFinish();
}
private void cancelNotificationAndFinish() {
notificationManager.cancel(number.hashCode());
finish();
}
}

@ -1,82 +0,0 @@
package org.tasks.reminders;
import static java.util.Arrays.asList;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import java.util.List;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment;
public class MissedCallDialog extends InjectingDialogFragment {
@Inject DialogBuilder dialogBuilder;
private String title;
private MissedCallHandler handler;
@Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
List<String> actions =
asList(
getString(R.string.MCA_return_call),
getString(R.string.MCA_add_task),
getString(R.string.MCA_ignore));
handler = (MissedCallHandler) getActivity();
return dialogBuilder
.newDialog()
.setTitle(title)
.setItems(
actions,
(dialog, which) -> {
switch (which) {
case 0:
handler.callNow();
break;
case 1:
handler.callLater();
break;
default:
handler.ignore();
break;
}
})
.show();
}
@Override
public void onDismiss(DialogInterface dialog) {
handler.dismiss();
}
public void setTitle(String title) {
this.title = title;
Dialog dialog = getDialog();
if (dialog != null) {
dialog.setTitle(title);
}
}
public interface MissedCallHandler {
void callNow();
void callLater();
void ignore();
void dismiss();
}
}

@ -45,9 +45,6 @@
<string name="TEA_control_files">الملفات</string>
<string name="TEA_control_reminders">مذكرات المهام</string>
<string name="TEA_control_hidden_section">---إخفاء دائما---</string>
<string name="MCA_return_call">اتصل الان</string>
<string name="MCA_add_task">اتصل لاحقاً</string>
<string name="MCA_ignore">تجاهل</string>
<string name="CRA_ignore">تجاهل</string>
<string name="CRA_title">تريد قائمة للمقابلات؟</string>
<string name="CRA_ignore_all">تجاهل جميع الأحداث</string>

@ -75,13 +75,6 @@
<string name="TEA_control_timer">Управление на таймера</string>
<string name="TEA_control_hidden_section">----Винаги скрито----</string>
<string name="TEA_load_more">Зареди повече...</string>
<string name="missed_call">Пропуснато обаждане от %s</string>
<string name="MCA_return_call">Обади се сега</string>
<string name="MCA_add_task">Обади се по-късно</string>
<string name="MCA_ignore">Игнорирай</string>
<string name="missed_calls">Пропуснати обаждания</string>
<string name="MCA_task_title_name">Обади се на %1$s на %2$s</string>
<string name="MCA_task_title_no_name">Обади се на %s </string>
<string name="CRA_ignore">Игнорирай</string>
<string name="CRA_title">Нуждаете се от списък за среща?</string>
<string name="CRA_ignore_body">Вие пренебрегнахте няколко събития в календара. Трябва ли Tasks да спре да пита за тях?</string>

@ -53,11 +53,6 @@
<string name="TEA_control_timer">Controls de temporització</string>
<string name="TEA_control_hidden_section">----Oculta-ho sempre----</string>
<string name="TEA_load_more">Carrega més...</string>
<string name="MCA_return_call">Truca ara</string>
<string name="MCA_add_task">Truca després</string>
<string name="MCA_ignore">Ignora</string>
<string name="MCA_task_title_name">Retorna la trucada a en/na %1$s a %2$s</string>
<string name="MCA_task_title_no_name">Retorna la trucada a %s</string>
<string name="EPr_appearance_header">Aparença</string>
<string name="EPr_beastMode_reset">Restableix els valors predeterminats</string>
<string name="EPr_fullTask_title">Mostra el títol sencer de la tasca</string>

@ -65,13 +65,6 @@
<string name="TEA_control_timer">Ovladač časovače</string>
<string name="TEA_control_hidden_section">-----Vždy skrývat----</string>
<string name="TEA_load_more">Více...</string>
<string name="missed_call">Zmeškaný hovor od %s</string>
<string name="MCA_return_call">Hned zavolat</string>
<string name="MCA_add_task">Zavolat později</string>
<string name="MCA_ignore">Ignorovat</string>
<string name="missed_calls">Zmeškané hovory</string>
<string name="MCA_task_title_name">Zavolat %1$s zpět v %2$s</string>
<string name="MCA_task_title_no_name">Zavolat %s zpět</string>
<string name="CRA_ignore">Ignorovat</string>
<string name="CRA_title">Potřebujete seznam schůze?</string>
<string name="CRA_ignore_body">Ignoroval jste několik událostí v kalendáři. Mám Vás přestat informovat i o úkolech?</string>

@ -70,13 +70,6 @@
<string name="TEA_control_timer">Timer-Einstellungen</string>
<string name="TEA_control_hidden_section">----Immer Verbergen----</string>
<string name="TEA_load_more">Weitere laden …</string>
<string name="missed_call">Verpasster Anruf von %s</string>
<string name="MCA_return_call">Jetzt anrufen</string>
<string name="MCA_add_task">Später anrufen</string>
<string name="MCA_ignore">Ignorieren</string>
<string name="missed_calls">Verpasste Anrufe</string>
<string name="MCA_task_title_name">%1$s unter %2$s zurückrufen</string>
<string name="MCA_task_title_no_name">%s zurückrufen</string>
<string name="CRA_ignore">Ablehnen</string>
<string name="CRA_title">Willst Du eine Besprechungsliste erstellen?</string>
<string name="CRA_ignore_body">Sie haben mehrere Kalendertermine ignoriert. Soll Tasks nicht mehr danach fragen? </string>

@ -61,11 +61,6 @@
<string name="TEA_control_timer">Χειριστήρια χρονοδιακόπτη</string>
<string name="TEA_control_hidden_section">-----Απόκρυψη πάντα-----</string>
<string name="TEA_load_more">Φόρτωση περισσότερων</string>
<string name="MCA_return_call">Κάλεσε τώρα</string>
<string name="MCA_add_task">Κάλεσε αργότερα</string>
<string name="MCA_ignore">Αγνοήστε</string>
<string name="MCA_task_title_name">Ξανακαλέστε %1$s στίς %2$s</string>
<string name="MCA_task_title_no_name">Ξανακαλέστε %s</string>
<string name="CRA_ignore">Αγνοήστε</string>
<string name="CRA_title">Χρειάζεστε λίστα για συνάντηση?</string>
<string name="CRA_ignore_body">Αγνοήσατε αρκετές κλήσεις. Να σταματήσουμε να ρωτάμε για αυτές;</string>

@ -71,13 +71,6 @@
<string name="TEA_control_timer">Controles de tiempo</string>
<string name="TEA_control_hidden_section">---Ocultar Siempre---</string>
<string name="TEA_load_more">Cargar mas...</string>
<string name="missed_call">Llamada perdida de %s</string>
<string name="MCA_return_call">Llamar ahora</string>
<string name="MCA_add_task">Llamar luego</string>
<string name="MCA_ignore">Ignorar</string>
<string name="missed_calls">Llamadas Perdidas</string>
<string name="MCA_task_title_name">Devolver la llamada a %1$s al %2$s</string>
<string name="MCA_task_title_no_name">Devolver la llamada a %s</string>
<string name="CRA_ignore">Ignorar</string>
<string name="CRA_title">¿Necesita una lista de reuniones?</string>
<string name="CRA_ignore_body">Ha ignorado varios eventos de calendario. ¿Debe Tasks dejar de preguntarle sobre ellos?</string>

@ -56,10 +56,6 @@
<string name="TEA_control_timer">کنترل تایمر</string>
<string name="TEA_control_hidden_section">----همیشه مخفی----</string>
<string name="TEA_load_more">بارگزاری بیشتر</string>
<string name="MCA_return_call">اکنون تماس بگیر</string>
<string name="MCA_add_task">بعدا تماس بگیر</string>
<string name="MCA_ignore">رد کردن</string>
<string name="missed_calls">تماس های از دست داده</string>
<string name="CRA_ignore">رد کردن</string>
<string name="CRA_title">نیاز به لیست ملاقات دارید ؟</string>
<string name="CRA_ignore_all">نادیده گرفتن تمام رویداد ها</string>

@ -71,13 +71,6 @@
<string name="TEA_control_timer">Ajastuksen säätimet</string>
<string name="TEA_control_hidden_section">----Piilota aina----</string>
<string name="TEA_load_more">Lataa lisää...</string>
<string name="missed_call">Vastaamaton puhelu: %s</string>
<string name="MCA_return_call">Soita heti</string>
<string name="MCA_add_task">Soita myöhemmin</string>
<string name="MCA_ignore">Ohita</string>
<string name="missed_calls">Vastaamattomat puhelut</string>
<string name="MCA_task_title_name">Soita %1$s takaisin %2$s</string>
<string name="MCA_task_title_no_name">Soita %s takaisin</string>
<string name="CRA_ignore">Ohita</string>
<string name="CRA_title">Tarvitaanko listaa tapaamisista?</string>
<string name="CRA_ignore_body">Olet ohittanut useita kalenteritapahtumia. Lopettaako Tasks niistä kyselemisen?</string>

@ -70,13 +70,6 @@
<string name="TEA_control_timer">Contrôles de rappel</string>
<string name="TEA_control_hidden_section">---- Toujours masquer ----</string>
<string name="TEA_load_more">Charger plus...</string>
<string name="missed_call">Appel manqué de %s</string>
<string name="MCA_return_call">Appeler maintenant</string>
<string name="MCA_add_task">Appeler plus tard</string>
<string name="MCA_ignore">Ignorer</string>
<string name="missed_calls">Appels manqués</string>
<string name="MCA_task_title_name">Rappeler %1$s au %2$s</string>
<string name="MCA_task_title_no_name">Rappeler %s</string>
<string name="CRA_ignore">Ignorer</string>
<string name="CRA_title">Besoin d\'une liste de réunion ? </string>
<string name="CRA_ignore_body">Vous avez ignoré plusieurs événements du calendrier. Souhaitez-vous que Tasks cesse de vous les proposer? </string>

@ -67,13 +67,6 @@
<string name="TEA_control_timer">Controles de tiempo</string>
<string name="TEA_control_hidden_section">---Ocultar Siempre---</string>
<string name="TEA_load_more">Cargar mas...</string>
<string name="missed_call">Llamada perdida de %s</string>
<string name="MCA_return_call">Llamar ahora</string>
<string name="MCA_add_task">Llamar luego</string>
<string name="MCA_ignore">Ignorar</string>
<string name="missed_calls">Llamadas Perdidas</string>
<string name="MCA_task_title_name">Devolver la llamada a %1$s al %2$s</string>
<string name="MCA_task_title_no_name">Devolver la llamada a %s</string>
<string name="CRA_ignore">Ignorar</string>
<string name="CRA_title">¿Necesita una lista de reuniones?</string>
<string name="CRA_ignore_body">Ha ignorado varios eventos de calendario. ¿Debe Tasks dejar de preguntarle sobre ellos?</string>

@ -75,13 +75,6 @@
<string name="TEA_control_timer">Időzítő Beállítása</string>
<string name="TEA_control_hidden_section">---Elrejtve---</string>
<string name="TEA_load_more">Továbbiak betöltése...</string>
<string name="missed_call">Nem fogadott hívás tőle: %s</string>
<string name="MCA_return_call">Hívás most</string>
<string name="MCA_add_task">Hívás később</string>
<string name="MCA_ignore">Kihagy</string>
<string name="missed_calls">Nem fogadott hívások</string>
<string name="MCA_task_title_name">%1$s visszahívása ekkor: %2$s</string>
<string name="MCA_task_title_no_name">%s visszahívása</string>
<string name="CRA_ignore">Kihagy</string>
<string name="CRA_title">Szeretne egy listát a találkozókról?</string>
<string name="CRA_ignore_body">Kihagytál jónéhány naptáreseményt. Ne kérdezzen rá többet a Tasks?</string>

@ -72,13 +72,6 @@
<string name="TEA_control_timer">Regolazioni Tempo</string>
<string name="TEA_control_hidden_section">----Nascondi Sempre----</string>
<string name="TEA_load_more">Caricane altri...</string>
<string name="missed_call">Chiamate perse da %s</string>
<string name="MCA_return_call">Chiama ora</string>
<string name="MCA_add_task">Chiama più tardi</string>
<string name="MCA_ignore">Ignora</string>
<string name="missed_calls">Chiamate perse</string>
<string name="MCA_task_title_name">Richiama %1$s al %2$s</string>
<string name="MCA_task_title_no_name">Richiama %s</string>
<string name="CRA_ignore">Ignora</string>
<string name="CRA_title">Hai bisogno di una lista per le riunioni?</string>
<string name="CRA_ignore_body">Hai ignorato diverse chiamate perse. Vuoi che Tasks smetta di notificartele?</string>

@ -68,13 +68,6 @@
<string name="TEA_control_timer">הערכת זמן</string>
<string name="TEA_control_hidden_section">----מוסתר תמיד----</string>
<string name="TEA_load_more">טען עוד...</string>
<string name="missed_call">שיחה שלא נענתה מ%s</string>
<string name="MCA_return_call">התקשר כעת</string>
<string name="MCA_add_task">התקשר מאוחר יותר</string>
<string name="MCA_ignore">התעלם</string>
<string name="missed_calls">שיחות שלא נענו</string>
<string name="MCA_task_title_name">\"החזר שיחה ל־%1$s ב־%2$s\"</string>
<string name="MCA_task_title_no_name">החזר שיחה ל־%s</string>
<string name="CRA_ignore">התעלם</string>
<string name="CRA_title">צריך רשימה לפגישה?</string>
<string name="CRA_ignore_body">התעלמת ממספר אירועי יומן. האם עלי לחדול מלהזכיר לך אירועי יומן?</string>

@ -68,13 +68,6 @@
<string name="TEA_control_timer">タイマーコントロール</string>
<string name="TEA_control_hidden_section">----常に隠す----</string>
<string name="TEA_load_more">さらに読み込む...</string>
<string name="missed_call">%s から不在着信</string>
<string name="MCA_return_call">いますぐ呼び出し</string>
<string name="MCA_add_task">後で呼び出し</string>
<string name="MCA_ignore">無視する</string>
<string name="missed_calls">不在着信</string>
<string name="MCA_task_title_name">%1$s に %2$s 折り返し連絡</string>
<string name="MCA_task_title_no_name">%s に折り返し連絡</string>
<string name="CRA_ignore">無視する</string>
<string name="CRA_title">ミーティングリストが必要ですか?</string>
<string name="CRA_ignore_body">いくつかのカレンダーイベントを無視しました. その報告を停止しますか?</string>

@ -71,13 +71,6 @@
<string name="TEA_control_timer">타이머 조절</string>
<string name="TEA_control_hidden_section">----항상 숨김----</string>
<string name="TEA_load_more">더 불러오기...</string>
<string name="missed_call">%s (으)로부터의 부재중 전화</string>
<string name="MCA_return_call">지금 전화하기</string>
<string name="MCA_add_task">나중에 전화하기</string>
<string name="MCA_ignore">무시하기</string>
<string name="missed_calls">부재중 전화</string>
<string name="MCA_task_title_name">%1$s 님에게 %2$s 에 다시 연락하세요</string>
<string name="MCA_task_title_no_name">%s 님에게 다시 연락하세요</string>
<string name="CRA_ignore">무시하기</string>
<string name="CRA_title">모임 목록이 필요하세요?</string>
<string name="CRA_ignore_body">당신은 몇몇의 달력 이벤트를 무시했습니다. Tasks가 이것을 더이상 알려드리지 않도록 할까요?</string>

@ -72,13 +72,6 @@
<string name="TEA_control_timer">Laikmačio nustatymai</string>
<string name="TEA_control_hidden_section">----Visada slėpti----</string>
<string name="TEA_load_more">Užkrauti daugiau...</string>
<string name="missed_call">Praleistas skambutis nuo: %s</string>
<string name="MCA_return_call">Paskambinti dabar</string>
<string name="MCA_add_task">Paskambinti vėliau</string>
<string name="MCA_ignore">Ignoruoti</string>
<string name="missed_calls">Praleisti skambučiai</string>
<string name="MCA_task_title_name">Perskambinti %1$s šiuo metu: %2$s</string>
<string name="MCA_task_title_no_name">Perskambinti %s</string>
<string name="CRA_ignore">Ignoruoti</string>
<string name="CRA_title">Reikia susitikimų sąrašo?</string>
<string name="CRA_ignore_body">Jūs ignoravote kelis kalendoriaus įvykius. Ar Tasks turėtų nustoti apie juos klausti?</string>

@ -47,9 +47,6 @@
<string name="TEA_control_files">Filer</string>
<string name="TEA_control_reminders">Påminnelser</string>
<string name="TEA_control_hidden_section">----Skjul alltid----</string>
<string name="MCA_return_call">Ring nå</string>
<string name="MCA_add_task">Ring senere</string>
<string name="MCA_ignore">Ignorer</string>
<string name="EPr_appearance_header">Utseende</string>
<string name="EPr_default_urgency_title">Standardfrist</string>
<string name="EPr_default_importance_title">Standardviktighet</string>

@ -72,13 +72,6 @@
<string name="TEA_control_timer">Tijd Controlers</string>
<string name="TEA_control_hidden_section">----Altijd Verbergen----</string>
<string name="TEA_load_more">Laad meer...</string>
<string name="missed_call">Gemiste oproepen van %s</string>
<string name="MCA_return_call">Bel nu</string>
<string name="MCA_add_task">Bel later</string>
<string name="MCA_ignore">Negeren</string>
<string name="missed_calls">Gemiste oproepen</string>
<string name="MCA_task_title_name">Bel %1$s terug op %2$s</string>
<string name="MCA_task_title_no_name">Bel %s terug</string>
<string name="CRA_ignore">Negeren</string>
<string name="CRA_title">Heb je een bijeenkomst lijst nodig? </string>
<string name="CRA_ignore_body">Je hebt meerdere agenda gebeurtenissen genegeerd. Moet Tasks je er niet meer naar vragen?</string>

@ -68,13 +68,6 @@
<string name="TEA_control_timer">Sterowanie zegara</string>
<string name="TEA_control_hidden_section">----Zawsze Ukryte----</string>
<string name="TEA_load_more">Wczytaj więcej...</string>
<string name="missed_call">Nieodebrane połączenie od %s</string>
<string name="MCA_return_call">Zadzwoń teraz</string>
<string name="MCA_add_task">Zadzwoń później</string>
<string name="MCA_ignore">Ignoruj</string>
<string name="missed_calls">Nieodebrane połączenia</string>
<string name="MCA_task_title_name">Oddzwoń do %1$s o %2$s</string>
<string name="MCA_task_title_no_name">Oddzwoń do %s</string>
<string name="CRA_ignore">Ignoruj</string>
<string name="CRA_title">Czy potrzebujesz listy spotkań?</string>
<string name="CRA_ignore_body">Zignorowałeś kilka wydarzeń z kalendarza. Czy Tasks powinien przestać cię o nie pytać?</string>

@ -66,13 +66,6 @@
<string name="TEA_control_timer">Temporizador</string>
<string name="TEA_control_hidden_section">----Esconder Sempre---</string>
<string name="TEA_load_more">Carregar mais...</string>
<string name="missed_call">Chamada perdida de %s</string>
<string name="MCA_return_call">Ligar agora</string>
<string name="MCA_add_task">Ligar mais tarde</string>
<string name="MCA_ignore">Ignorar</string>
<string name="missed_calls">Chamadas perdidas</string>
<string name="MCA_task_title_name">Retornar ligação de %1$s às %2$s</string>
<string name="MCA_task_title_no_name">Retornar ligação de %s</string>
<string name="CRA_ignore">Ignorar</string>
<string name="CRA_title">Precisa de uma lista de reuniões?</string>
<string name="CRA_ignore_body">Você ignorou vários eventos do calendário. O Tasks deve parar de lhe perguntar sobre eles?</string>

@ -69,13 +69,6 @@
<string name="TEA_control_timer">Controlos temporais</string>
<string name="TEA_control_hidden_section">----Ocultar sempre----</string>
<string name="TEA_load_more">Carregar mais...</string>
<string name="missed_call">Chamada perdida de %s</string>
<string name="MCA_return_call">Chamar agora</string>
<string name="MCA_add_task">Chamar mais tarde</string>
<string name="MCA_ignore">Ignorar</string>
<string name="missed_calls">Chamadas perdidas</string>
<string name="MCA_task_title_name">Ligar a %1$s às %2$s</string>
<string name="MCA_task_title_no_name">Ligar a %s</string>
<string name="CRA_ignore">Ignorar</string>
<string name="CRA_title">Precisa de uma lista de encontros?</string>
<string name="CRA_ignore_body">Você ignorou vários eventos de calendário. Pretende que o Tasks não o notifique novamente?</string>

@ -72,13 +72,6 @@
<string name="TEA_control_timer">Учет времени</string>
<string name="TEA_control_hidden_section">Всегда скрывать</string>
<string name="TEA_load_more">Загрузить больше...</string>
<string name="missed_call">Пропущенный звонок от %s</string>
<string name="MCA_return_call">Позвонить сейчас</string>
<string name="MCA_add_task">Позвонить позже</string>
<string name="MCA_ignore">Игнорировать</string>
<string name="missed_calls">Пропущенные звонки</string>
<string name="MCA_task_title_name">Перезвонить %1$s в %2$s</string>
<string name="MCA_task_title_no_name">Перезвонить %s</string>
<string name="CRA_ignore">Игнорировать</string>
<string name="CRA_title">Необходим список встреч?</string>
<string name="CRA_ignore_body">Вы пропустили несколько событий календаря. Прекратить спрашивать о них?</string>

@ -68,13 +68,6 @@
<string name="TEA_control_timer">Stopky - nastavenie</string>
<string name="TEA_control_hidden_section">----Skryť vždy----</string>
<string name="TEA_load_more">Načítať viac...</string>
<string name="missed_call">Zmeškaný hovor od %s</string>
<string name="MCA_return_call">Volať teraz</string>
<string name="MCA_add_task">Volať neskôr</string>
<string name="MCA_ignore">Ignorovať</string>
<string name="missed_calls">Zmeškané hovory</string>
<string name="MCA_task_title_name">Zavolať %1$s späť o %2$s</string>
<string name="MCA_task_title_no_name">Zavolať %s späť</string>
<string name="CRA_ignore">Ignorovať</string>
<string name="CRA_title">Potrebuješ zoznam na stretnutie?</string>
<string name="CRA_ignore_body">Nevenoval si pozornosť niekoľkým udalostiam kalendára. Chceš, aby sa Úlohy na ne prestali pýtať?</string>

@ -62,11 +62,6 @@
<string name="TEA_control_timer">Upravljanje s štoparico</string>
<string name="TEA_control_hidden_section">----Vedno skrij----</string>
<string name="TEA_load_more">Naloži še...</string>
<string name="MCA_return_call">Kliči zdaj</string>
<string name="MCA_add_task">Kliči kasneje</string>
<string name="MCA_ignore">Ignoriraj</string>
<string name="MCA_task_title_name">%1$s pokliči nazaj ob %2$s</string>
<string name="MCA_task_title_no_name">Vrni klic %s </string>
<string name="CRA_ignore">Ignoriraj</string>
<string name="CRA_title">Potrebujete seznam sestankov?</string>
<string name="CRA_ignore_body">Ignorirali ste številne dogodke na koledarju. Naj vas aplikacija Opravki neha spraševati o njih?</string>

@ -68,13 +68,6 @@
<string name="TEA_control_timer">Inställningar för tidtagarur</string>
<string name="TEA_control_hidden_section">----Göm alltid----</string>
<string name="TEA_load_more">Ladda mer...</string>
<string name="missed_call">Missat samtal från %s</string>
<string name="MCA_return_call">Ring nu</string>
<string name="MCA_add_task">Ring senare</string>
<string name="MCA_ignore">Ignorera</string>
<string name="missed_calls">Missade samtal</string>
<string name="MCA_task_title_name">Ring %1$s tillbaka kl %2$s</string>
<string name="MCA_task_title_no_name">Ring %s tillbaka</string>
<string name="CRA_ignore">Ignorera</string>
<string name="CRA_title">Behöver du en lista över möten?</string>
<string name="CRA_ignore_body">Du har ignorerat flera kalenderhändelser. Vill du att Tasks slutar fråga dig om dem?</string>

@ -76,13 +76,6 @@
<string name="TEA_control_timer">Kronometre Denetimleri</string>
<string name="TEA_control_hidden_section">----Her Zaman Gizle----</string>
<string name="TEA_load_more">Daha yükle...</string>
<string name="missed_call">%s kişisinden yanıtsız çağrı</string>
<string name="MCA_return_call">Şimdi ara</string>
<string name="MCA_add_task">Sonra ara</string>
<string name="MCA_ignore">Yoksay</string>
<string name="missed_calls">Yanıtsız çağrılar</string>
<string name="MCA_task_title_name">%1$s kişisini geri ara: %2$s</string>
<string name="MCA_task_title_no_name">%s kişisini geri ara</string>
<string name="CRA_ignore">Yoksay</string>
<string name="CRA_title">Bir toplantı listesine mi ihtiyacınız var?</string>
<string name="CRA_ignore_body">Bir kaç tane takvim etkinliğini yok saydınız. Tasks\'in size bunlar hakkında sormayı kesmesini ister misiniz?</string>

@ -71,13 +71,6 @@
<string name="TEA_control_timer">Управління таймером</string>
<string name="TEA_control_hidden_section">----Приховувати завжди----</string>
<string name="TEA_load_more">Завантажити більше...</string>
<string name="missed_call">Пропущений дзвінок від %s</string>
<string name="MCA_return_call">Зателефонувати зараз</string>
<string name="MCA_add_task">Зателефонувати пізніше</string>
<string name="MCA_ignore">Ігнорувати</string>
<string name="missed_calls">Пропущені виклики</string>
<string name="MCA_task_title_name">Перетелефонувати %1$s о %2$s</string>
<string name="MCA_task_title_no_name">Перетелефонувати %s </string>
<string name="CRA_ignore">Ігнорувати</string>
<string name="CRA_title">Потрібен список для зустрічі?</string>
<string name="CRA_ignore_body">Ви проігнорували декілька календарних подій. Більше не запитувати про них?</string>

@ -72,13 +72,6 @@
<string name="TEA_control_timer">定时器控件</string>
<string name="TEA_control_hidden_section">----始终隐藏----</string>
<string name="TEA_load_more">加载更多……</string>
<string name="missed_call">来自 %s 的未接来电</string>
<string name="MCA_return_call">现在回电</string>
<string name="MCA_add_task">稍后回电</string>
<string name="MCA_ignore">忽略</string>
<string name="missed_calls">未接来电</string>
<string name="MCA_task_title_name">请回电给 %1$s电话是 %2$s</string>
<string name="MCA_task_title_no_name">请回电给 %s</string>
<string name="CRA_ignore">忽略</string>
<string name="CRA_title">需要会议列表?</string>
<string name="CRA_ignore_body">您已经忽略了几个日历事件。对于这些事件,清单小助理是否应该不再询问您呢?</string>

@ -56,11 +56,6 @@
<string name="TEA_control_timer">定時器控件</string>
<string name="TEA_control_hidden_section">----始終隱藏----</string>
<string name="TEA_load_more">加載更多……</string>
<string name="MCA_return_call">現在回電</string>
<string name="MCA_add_task">稍後回電</string>
<string name="MCA_ignore">忽略</string>
<string name="MCA_task_title_name">請回電給 %1$s電話是 %2$s</string>
<string name="MCA_task_title_no_name">請回電給 %s</string>
<string name="CRA_ignore">忽略</string>
<string name="CRA_title">需要一個會議列表嗎?</string>
<string name="CRA_ignore_body">您已經忽略了好幾個月曆上的事件, 之後 Tasks 是不是不要再詢問您了呢?</string>

@ -44,9 +44,6 @@
<!-- default random reminder setting (in hours) -->
<string name="p_rmd_default_random_hours">notif_default_reminder</string>
<!-- field missed calls preference -->
<string name="p_field_missed_calls">field_missed_calls</string>
<!-- calendar reminders preference -->
<string name="p_calendar_reminders">p_calendar_reminder</string>

@ -194,27 +194,6 @@ File %1$s contained %2$s.\n\n
<!-- Text to load more activity -->
<string name="TEA_load_more">Load more…</string>
<!-- ===================================================== MissedCallActivity == -->
<string name="missed_call">Missed call from %s</string>
<!-- Missed call: return call -->
<string name="MCA_return_call">Call now</string>
<!-- Missed call: return call -->
<string name="MCA_add_task">Call later</string>
<!-- Missed call: return call -->
<string name="MCA_ignore">Ignore</string>
<string name="missed_calls">Missed calls</string>
<!-- Missed call: task title with name (%1$s -> name, %2$s -> number)-->
<string name="MCA_task_title_name">Call %1$s back at %2$s</string>
<!-- Missed call: task title no name (%s -> number)-->
<string name="MCA_task_title_no_name">Call %s back</string>
<!-- ======================================= Calendar reminder activity == -->
<!-- Calendar remindeer ignore button -->

@ -52,11 +52,6 @@
android:key="@string/p_led_notification"
android:summary="@string/hardware_support_required"
android:title="@string/led_notification"/>
<CheckBoxPreference
android:defaultValue="false"
android:dependency="@string/p_rmd_enabled"
android:key="@string/p_field_missed_calls"
android:title="@string/missed_calls"/>
<org.tasks.ui.TimePreference
android:defaultValue="@integer/default_remind_time"
android:dependency="@string/p_rmd_enabled"

Loading…
Cancel
Save