diff --git a/app/src/main/java/com/djonique/birdays/activities/SettingsActivity.java b/app/src/main/java/com/djonique/birdays/activities/SettingsActivity.java
index cf38b0f..03b5275 100644
--- a/app/src/main/java/com/djonique/birdays/activities/SettingsActivity.java
+++ b/app/src/main/java/com/djonique/birdays/activities/SettingsActivity.java
@@ -170,7 +170,7 @@ public void onRequestPermissionsResult(int requestCode,
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILE_MANAGER && resultCode == RESULT_OK) {
- new RecoverHelper(this).recoverRecords(data.getData().getPath());
+ new RecoverHelper(this).recoverRecords(this, data.getData());
}
}
@@ -405,7 +405,7 @@ public boolean onPreferenceClick(Preference preference) {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILE_MANAGER && resultCode == RESULT_OK) {
- new RecoverHelper(getActivity()).recoverRecords(data.getData().getPath());
+ new RecoverHelper(getActivity()).recoverRecords(getActivity(), data.getData());
}
}
diff --git a/app/src/main/java/com/djonique/birdays/adapters/MonthFragmentAdapter.java b/app/src/main/java/com/djonique/birdays/adapters/MonthFragmentAdapter.java
index fa30706..a3d8137 100644
--- a/app/src/main/java/com/djonique/birdays/adapters/MonthFragmentAdapter.java
+++ b/app/src/main/java/com/djonique/birdays/adapters/MonthFragmentAdapter.java
@@ -23,6 +23,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
@@ -217,14 +218,14 @@ private void changeCardViewBackgroundColor(long date, CardView cardView, TextVie
boolean today = daysLeft.equals(context.getString(R.string.today));
if (Utils.isBirthdayPassed(date)) {
textView.setVisibility(View.GONE);
- cardView.setCardBackgroundColor(context.getResources().getColor(R.color.cardview_background));
+ cardView.setCardBackgroundColor(ContextCompat.getColor(context, R.color.cardview_background));
} else {
textView.setVisibility(View.VISIBLE);
if (today) {
- cardView.setCardBackgroundColor(context.getResources().getColor(R.color.cardview_birthday));
+ cardView.setCardBackgroundColor(ContextCompat.getColor(context, R.color.cardview_birthday));
textView.setText(context.getString(R.string.today));
} else {
- cardView.setCardBackgroundColor(context.getResources().getColor(R.color.cardview_background));
+ cardView.setCardBackgroundColor(ContextCompat.getColor(context, R.color.cardview_background));
String summary = context.getString(R.string.days_left) + ": " + daysLeft;
textView.setText(summary);
}
diff --git a/app/src/main/java/com/djonique/birdays/backup/ExportHelper.java b/app/src/main/java/com/djonique/birdays/backup/ExportHelper.java
index 97adc60..e3a04e4 100644
--- a/app/src/main/java/com/djonique/birdays/backup/ExportHelper.java
+++ b/app/src/main/java/com/djonique/birdays/backup/ExportHelper.java
@@ -44,6 +44,7 @@
public class ExportHelper {
+ // XML constants
private static final String RECORDS = "records";
private static final String PERSON = "person";
private static final String NAME = "name";
@@ -54,6 +55,7 @@ public class ExportHelper {
private static final String BACKUP = "backup";
private static final String UTF_8 = "UTF-8";
+ // Exceptions constants
private static final String ILLEGAL_ARGUMENT_EXCEPTION = "IllegalArgumentException";
private static final String ILLEGAL_STATE_EXCEPTION = "IllegalStateException";
private static final String IO_EXCEPTION = "IOException";
diff --git a/app/src/main/java/com/djonique/birdays/backup/RecoverHelper.java b/app/src/main/java/com/djonique/birdays/backup/RecoverHelper.java
index a183cdd..3a74691 100644
--- a/app/src/main/java/com/djonique/birdays/backup/RecoverHelper.java
+++ b/app/src/main/java/com/djonique/birdays/backup/RecoverHelper.java
@@ -16,7 +16,12 @@
package com.djonique.birdays.backup;
+import android.content.ContentUris;
import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Environment;
+import android.provider.DocumentsContract;
import android.widget.Toast;
import com.djonique.birdays.R;
@@ -38,6 +43,7 @@
public class RecoverHelper {
+ // XML constants
private static final String PERSON = "person";
private static final String NAME = "name";
private static final String DATE = "date";
@@ -45,17 +51,27 @@ public class RecoverHelper {
private static final String PHONE_NUMBER = "phone_number";
private static final String EMAIL = "email";
+ // Exceptions constants
private static final String XML_PULL_PARSER_EXCEPTION = "XmlPullParserException";
private static final String FILE_NOT_FOUND_EXCEPTION = "FileNotFoundException";
private static final String IO_EXCEPTION = "IOException";
+ // Path constants
+ private static final String PRIMARY = "primary";
+ private static final String CONTENT_DOWNLOADS = "content://downloads/public_downloads";
+ private static final String AUTHORITY_EXTERNAL_STORAGE = "com.android.externalstorage.documents";
+ private static final String AUTHORITY_DOWNLOADS = "com.android.providers.downloads.documents";
+ private static final String COLUMN_DATA = "_data";
+
private Context context;
public RecoverHelper(Context context) {
this.context = context;
}
- public void recoverRecords(String path) {
+ public void recoverRecords(Context context, Uri uri) {
+ String path = getPath(context, uri);
+ if (path == null) path = uri.getPath();
XmlPullParserFactory pullParserFactory;
try {
pullParserFactory = XmlPullParserFactory.newInstance();
@@ -129,4 +145,46 @@ private void parseXml(XmlPullParser parser) {
Toast.makeText(context, IO_EXCEPTION, Toast.LENGTH_LONG).show();
}
}
+
+ private String getPath(Context context, Uri uri) {
+ if (isExternalStorageDocument(uri)) {
+ String docId = DocumentsContract.getDocumentId(uri);
+ String[] split = docId.split(":");
+ String type = split[0];
+
+ if (PRIMARY.equalsIgnoreCase(type)) {
+ return Environment.getExternalStorageDirectory() + "/" + split[1];
+ }
+ } else if (isDownloadsDocument(uri)) {
+ String id = DocumentsContract.getDocumentId(uri);
+ Uri contentUri = ContentUris.withAppendedId(Uri.parse(CONTENT_DOWNLOADS), Long.valueOf(id));
+ return getDataColumn(context, contentUri);
+ }
+ return null;
+ }
+
+ private boolean isExternalStorageDocument(Uri uri) {
+ return uri.getAuthority().equals(AUTHORITY_EXTERNAL_STORAGE);
+ }
+
+ private boolean isDownloadsDocument(Uri uri) {
+ return uri.getAuthority().equals(AUTHORITY_DOWNLOADS);
+ }
+
+ private String getDataColumn(Context context, Uri uri) {
+ Cursor cursor = null;
+ String column = COLUMN_DATA;
+ String[] projection = {column};
+ try {
+ cursor = context.getContentResolver().query(uri, projection, null, null, null);
+ if (cursor != null && cursor.moveToFirst()) {
+ int index = cursor.getColumnIndexOrThrow(column);
+ return cursor.getString(index);
+ }
+ } finally {
+ if (cursor != null)
+ cursor.close();
+ }
+ return null;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/djonique/birdays/dialogs/NewPersonDialogFragment.java b/app/src/main/java/com/djonique/birdays/dialogs/NewPersonDialogFragment.java
index 4552de4..22f5f61 100644
--- a/app/src/main/java/com/djonique/birdays/dialogs/NewPersonDialogFragment.java
+++ b/app/src/main/java/com/djonique/birdays/dialogs/NewPersonDialogFragment.java
@@ -84,7 +84,7 @@ public void onAttach(Activity activity) {
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- builder.setTitle(R.string.add_new_record);
+ builder.setTitle(R.string.new_record);
calendar = Calendar.getInstance();
final Person person = new Person();
diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml
index 42cb823..82f02cc 100644
--- a/app/src/main/res/layout/activity_detail.xml
+++ b/app/src/main/res/layout/activity_detail.xml
@@ -94,7 +94,7 @@
+ android:text="@string/birthday" />
diff --git a/app/src/main/res/layout/description_famous_list_view.xml b/app/src/main/res/layout/description_famous_list_view.xml
index aba4531..0f75079 100644
--- a/app/src/main/res/layout/description_famous_list_view.xml
+++ b/app/src/main/res/layout/description_famous_list_view.xml
@@ -23,7 +23,7 @@
+ android:maxLines="2" />
+ android:maxLines="2" />
Удалить
- Новая запись
+ Новая запись
Добавить из контактов
Это действие выполнить невозможно из-за особенностей устройства
Имя
@@ -68,7 +68,7 @@
Запись добавлена
- День рождения
+ День рождения
Дней осталось
Сегодня
Дней с момента рождения
@@ -145,7 +145,7 @@
Экспортирование…
Резервное копирование завершено, XML-файл находится в\u0020
Восстановить записи (Beta)
- Выберите XML-файл с резервной копией во внешнем хранилище
+ Выберите XML-файл с резервной копией
Невозможно выполнить действие, пожалуйста, установите диспетчер файлов
Записи восстановлены
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index a3f64bf..968873f 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -55,7 +55,7 @@
Löschen
- Neuer Eintrag
+ Neuer Eintrag
Aus Kontakten hinzufügen
Aktion kann wegen Geräteeigenschaften nicht ausgeführt werden
Name
@@ -68,7 +68,7 @@
Eintrag hinzugefügt
- Geburtstag
+ Geburtstag
Tage bis zum nächsten Geburtstag
Heute
Tage seit der Geburt
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index a2f1418..8dbb227 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -55,7 +55,7 @@
Delete
- New record
+ New record
Add from contacts
Unable to perform action due to device features
Name
@@ -68,7 +68,7 @@
Record added
- Birthday
+ Birthday
Days until next birthday
Today
Days since birth
@@ -145,7 +145,7 @@
Exporting records…
Backup finished, XML file in the\u0020
Recover records (Beta)
- Choose the XML file with backup in external storage
+ Choose the XML file with backup
Unable to perform action, please install file manager
Records recovered
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 428070f..b86bcaa 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -55,7 +55,7 @@
Eliminar
- Nueva entrada
+ Nueva entrada
Añadir desde contactos
Es imposible realizar esta acción en este dispositivo
Nombre
@@ -68,7 +68,7 @@
Entrada añadida
- Cumpleaños
+ Cumpleaños
Días hasta el próximo cumpleaños
Hoy
Días desde su nacimiento
@@ -145,7 +145,7 @@
Exporting records…
Backup finished, XML file in the\u0020
Recover records (Beta)
- Choose the XML file with backup in external storage
+ Choose the XML file with backup
Unable to perform action, please install file manager
Records recovered
diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml
index 058b43c..51ed3be 100644
--- a/app/src/main/res/values-kk/strings.xml
+++ b/app/src/main/res/values-kk/strings.xml
@@ -55,7 +55,7 @@
Удалить
- Новая запись
+ Новая запись
Добавить из контактов
Это действие выполнить невозможно из-за особенностей устройства
Имя
@@ -68,7 +68,7 @@
Запись добавлена
- День рождения
+ День рождения
Дней осталось
Сегодня
Дней с момента рождения
@@ -145,7 +145,7 @@
Экспортирование…
Резервное копирование завершено, XML-файл находится в\u0020
Восстановить записи (Beta)
- Выберите XML-файл с резервной копией во внешнем хранилище
+ Выберите XML-файл с резервной копией
Невозможно выполнить действие, пожалуйста, установите диспетчер файлов
Записи восстановлены
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 058b43c..51ed3be 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -55,7 +55,7 @@
Удалить
- Новая запись
+ Новая запись
Добавить из контактов
Это действие выполнить невозможно из-за особенностей устройства
Имя
@@ -68,7 +68,7 @@
Запись добавлена
- День рождения
+ День рождения
Дней осталось
Сегодня
Дней с момента рождения
@@ -145,7 +145,7 @@
Экспортирование…
Резервное копирование завершено, XML-файл находится в\u0020
Восстановить записи (Beta)
- Выберите XML-файл с резервной копией во внешнем хранилище
+ Выберите XML-файл с резервной копией
Невозможно выполнить действие, пожалуйста, установите диспетчер файлов
Записи восстановлены
diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml
index 4b79eba..0d2d77e 100644
--- a/app/src/main/res/values-sw600dp/dimens.xml
+++ b/app/src/main/res/values-sw600dp/dimens.xml
@@ -19,7 +19,6 @@
24sp
- 96sp
72sp
96sp
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index b9401b5..0e4c784 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -55,7 +55,7 @@
Видалити
- Новий запис
+ Новий запис
Додати з контактів
Цю дію неможливо виконати через особливості пристрою
Ім\'я
@@ -68,7 +68,7 @@
Запис доданий
- День народження
+ День народження
Днів лишилось
Сьогодні
Днів із моменту народження
@@ -145,7 +145,7 @@
Експортування…
Резервне копіювання завершене, XML-файл знаходиться в\u0020
Відновити записи (Beta)
- Виберіть XML-файл із резервною копією в зовнішньому сховищі
+ Виберіть XML-файл із резервною копією
Неможливо виконати дію, будь ласка, встановіть диспетчер файлів
Записи відновлені
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index e5b0225..071d338 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -19,7 +19,6 @@
16sp
- 72sp
56sp
72sp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 582f3a6..3b52b42 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -57,7 +57,7 @@
Delete
- New record
+ New record
Add from contacts
Unable to perform action due to device features
Name
@@ -72,7 +72,7 @@
Record added
- Birthday
+ Birthday
Days until next birthday
Today
Days since birth
@@ -178,7 +178,7 @@
Exporting records…
Backup finished, XML file in the\u0020
Recover records (Beta)
- Choose the XML file with backup in external storage
+ Choose the XML file with backup
Unable to perform action, please install file manager
Records recovered
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index e867d7c..e249aef 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -102,13 +102,13 @@