alexstyl / memento-calendar Goto Github PK
View Code? Open in Web Editor NEWThe sweetest calendar for Android
License: MIT License
The sweetest calendar for Android
License: MIT License
After changing the appearance of the Today Widget, the widget does not visually persist the changes that I made.
The widget's appearance does not get updated to the one's I chose.
The widget to be updated with the selected visual settings
On develop branch, birthdays aren't displayed anymore
Change the launchpoint to launch com.alexstyl.specialdates.ui.activity.MainActivity
in stead of the Debug activity
BirthdayDatabaseRefresher.storeContactsToProvider
BirthdayMarshaller.marshall
just returns new ContentValues[0];
(I'm not entirely sure this is the problem)The app opens without any birthday
Birthdays are displayed
Feature: Currently no option to edit or delete events. Should have ability to edit/delete
The google-services.json
file should be automatically generated when the project is built. Something somewhere broke and that doesn't happen anymore 🤦♀️
Error:Execution failed for task ':android_mobile:processDebugGoogleServices'.
> File google-services.json is missing. The Google Services Plugin cannot function without it.
Searched Location:
/Users/alexandrosstylianidis/Projects/memento-mad/android_mobile/src/debug/google-services.json
/Users/alexandrosstylianidis/Projects/memento-mad/android_mobile/google-services.json
As a workaround, you may create a new google-services.json
file into your android_mobile
folder with the following:
{
"project_info": {
"project_id": "mockproject-1234",
"project_number": "123456789000",
"name": "FirebaseQuickstarts",
"firebase_url": "https://mockproject-1234.firebaseio.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:123456789000:android:f1bf012572b04063",
"client_id": "android:com.google.samples.quickstart.admobexample",
"client_type": 1,
"android_client_info": {
"package_name": "com.alexstyl.specialdates",
"certificate_hash": []
}
},
"oauth_client": [
{
"client_id": "123456789000-hjugbg6ud799v4c49dim8ce2usclthar.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.alexstyl.specialdates",
"certificate_hash": "4C20644DE36B8F89D25650C7D1FF9FBAE650FDF7"
}
},
{
"client_id": "123456789000-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzbSzCn1N6LWIe6wthYyrgUUSAlUsdqMb-wvTo"
}
],
"services": {
"analytics_service": {
"status": 1
},
"cloud_messaging_service": {
"status": 2,
"apns_config": []
},
"appinvite_service": {
"status": 2,
"other_platform_oauth_client": [
{
"client_id": "123456789000-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com",
"client_type": 3
}
]
},
"google_signin_service": {
"status": 2
},
"ads_service": {
"status": 2,
"test_banner_ad_unit_id": "ca-app-pub-3940256099942544/6300978111",
"test_interstitial_ad_unit_id": "ca-app-pub-3940256099942544/1033173712"
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:123456789000:android:f1bf012572b04063",
"client_id": "android:com.google.samples.quickstart.admobexample",
"client_type": 1,
"android_client_info": {
"package_name": "com.alexstyl.specialdates.pro",
"certificate_hash": []
}
},
"oauth_client": [
{
"client_id": "123456789000-hjugbg6ud799v4c49dim8ce2usclthar.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.alexstyl.specialdates.pro",
"certificate_hash": "4C20644DE36B8F89D25650C7D1FF9FBAE650FDF7"
}
},
{
"client_id": "123456789000-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzbSzCn1N6LWIe6wthYyrgUUSAlUsdqMb-wvTo"
}
],
"services": {
"analytics_service": {
"status": 1
},
"cloud_messaging_service": {
"status": 2,
"apns_config": []
},
"appinvite_service": {
"status": 2,
"other_platform_oauth_client": [
{
"client_id": "123456789000-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com",
"client_type": 3
}
]
},
"google_signin_service": {
"status": 2
},
"ads_service": {
"status": 2,
"test_banner_ad_unit_id": "ca-app-pub-3940256099942544/6300978111",
"test_interstitial_ad_unit_id": "ca-app-pub-3940256099942544/1033173712"
}
}
}
],
"client_info": [],
"ARTIFACT_VERSION": "1"
}
With your app being open source, did you consider publishing the .apk
along with the releases/
– so folks without access to Playstore could grab it?
A contact that clearly has Birthday, is not displayed in the app's search.
alex
)The search containing no results (see Searching
screenshot)
The contact to be displayed (Alexandros
)
Searching | Contact has birthday |
---|---|
NOTE: For some reason the contact will be displayed when the "Greek Namedays" are chosen to be displayed form the app settings.
The date, month, year should be invalidated when the Include Year?
checkbox is checked, as we might end up with false dates (i.e unchecking the year should always include February 29, but February 29, 2018 doesn't make sense).
Donate Activity -> click donate Button --> open Dialog ---> press back
meta pataw pali sto Donate button
psofaei to activity
me warning
09-07 20:13:57.158 30064-30064/? W/System.err: com.alexstyl.specialdates.donate.a.b$a: Can't dispose because an async operation (launchPurchaseFlow) is in progress.
09-07 20:13:57.158 30064-30064/? W/System.err: at com.alexstyl.specialdates.donate.a.b.a(IabHelper.java:324)
09-07 20:13:57.159 30064-30064/? W/System.err: at com.alexstyl.specialdates.donate.b.a(AndroidDonationService.java:66)
09-07 20:13:57.159 30064-30064/? W/System.err: at com.alexstyl.specialdates.donate.h.a(DonatePresenter.java:40)
09-07 20:13:57.159 30064-30064/? W/System.err: at com.alexstyl.specialdates.donate.DonateActivity.onDestroy(DonateActivity.java:121)
On Android 6.0, selecting the Ringtone option of the Daily Reminder screen brings up the External SD permission dialog. After the user grants the permission to the app, the ringtone dialog does not show up and the user has to select the Ringtone option again.
On an Android 6.0 device:
Idle Daily Reminder screen
The Ringtone Picker dialog to show up
We use AccountManager#getAccounts() in order to query all potential accounts to store new contacts. According to AS, this requires an explicit permission check. If it is indeed required, this will probably crash the app.
While creating a contact in app, app gives option to select birth date of contact. When selecting birth date from date picker, app needs to show 28 days in February month because 2018 is not a leap year.
While selecting birth date from date picker, the date picker showing me 30 Feb 2018 as a date. When i set 30 Feb 2018 as birthday of contact, the app got crashed.
To reproduce the bug follow the following steps :-
* Device: Samsung J7 Prime
* Operating system: Android 7.0 Nougatt
* App Version: v11.2
Check/Uncheck checkbox on New Birthday date
Checkbox "Bithday Year" Checked
"variations":[]}
08-30 20:15:44.889 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-63,"main":"Του Ασώτου","variations":[]}
08-30 20:15:44.890 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-59,"main":"Τσικνοπέμπτη","variations":[]}
08-30 20:15:44.891 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-57,"main":"Ψυχοσάββατο Α'","variations":[]}
08-30 20:15:44.892 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-56,"main":"Της Απόκρεω","variations":[]}
08-30 20:15:44.894 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-49,"main":"Τυροφάγου","variations":[]}
08-30 20:15:44.897 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-48,"main":"Καθαρά Δευτέρα","variations":[]}
08-30 20:15:44.901 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-5,"main":"Μεγάλη Τρίτη","variations":[]}
08-30 20:15:44.902 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-4,"main":"Μεγάλη Τετάρτη","variations":[]}
08-30 20:15:44.902 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-2,"main":"Μεγάλη Παρασκευή","variations":[]}
08-30 20:15:44.903 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-1,"main":"Μεγάλο Σάββατο","variations":[]}
08-30 20:15:44.904 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":1,"main":"2α Διακαινησίμου - Δευτέρα","variations":[]}
08-30 20:15:44.905 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":4,"main":"5η Διακαινησίμου - Πέμπτη","variations":[]}
08-30 20:15:44.906 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":5,"main":"6η Διακαινησίμου - Παρασκευή","variations":[]}
08-30 20:15:44.907 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":6,"main":"7η Διακαινησίμου - Σαββάτο","variations":[]}
08-30 20:15:44.908 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":48,"main":"Ψυχοσάββατο Β'","variations":[]}
08-30 20:15:44.909 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":49,"main":"Πεντηκοστή","variations":[]}
08-30 20:15:44.915 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-2,"main":"Μεγάλη Παρασκευή","variations":[]}
08-30 20:15:44.916 7359-7399/com.alexstyl.specialdates W/NoTils: [AsyncTask #1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":1,"main":"2α Διακαινησίμου - Δευτέρα","variations":[]}
08-30 20:15:45.307 7359-7371/com.alexstyl.specialdates I/art: Background sticky concurrent mark sweep GC freed 103105(3MB) AllocSpace objects, 7(752KB) LOS objects, 29% free, 8MB/12MB, paused 8.436ms total 52.091ms
08-30 20:15:45.757 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-70,"main":"Τελώνου και Φαρισαίου - Αρχή Τριωδίου","variations":[]}
08-30 20:15:45.758 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-63,"main":"Του Ασώτου","variations":[]}
08-30 20:15:45.759 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-59,"main":"Τσικνοπέμπτη","variations":[]}
08-30 20:15:45.760 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-57,"main":"Ψυχοσάββατο Α'","variations":[]}
08-30 20:15:45.761 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-56,"main":"Της Απόκρεω","variations":[]}
08-30 20:15:45.762 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-49,"main":"Τυροφάγου","variations":[]}
08-30 20:15:45.766 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-48,"main":"Καθαρά Δευτέρα","variations":[]}
08-30 20:15:45.768 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-5,"main":"Μεγάλη Τρίτη","variations":[]}
08-30 20:15:45.769 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-4,"main":"Μεγάλη Τετάρτη","variations":[]}
08-30 20:15:45.770 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-2,"main":"Μεγάλη Παρασκευή","variations":[]}
08-30 20:15:45.771 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-1,"main":"Μεγάλο Σάββατο","variations":[]}
08-30 20:15:45.772 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":1,"main":"2α Διακαινησίμου - Δευτέρα","variations":[]}
08-30 20:15:45.773 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":4,"main":"5η Διακαινησίμου - Πέμπτη","variations":[]}
08-30 20:15:45.774 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":5,"main":"6η Διακαινησίμου - Παρασκευή","variations":[]}
08-30 20:15:45.774 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":6,"main":"7η Διακαινησίμου - Σαββάτο","variations":[]}
08-30 20:15:45.776 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":48,"main":"Ψυχοσάββατο Β'","variations":[]}
08-30 20:15:45.777 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":49,"main":"Πεντηκοστή","variations":[]}
08-30 20:15:45.778 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":-2,"main":"Μεγάλη Παρασκευή","variations":[]}
08-30 20:15:45.779 7359-7408/com.alexstyl.specialdates W/NoTils: [RxCachedThreadScheduler-1][(EasternNamedaysExtractor.java:35).extractNamedaysAsDaysFromEaster] Skipped [%s] because it had no variations {"toEaster":1,"main":"2α Διακαινησίμου - Δευτέρα","variations":[]}
The app hangs on the loading screen after I log into Facebook.
The HideStatusBarListener class causes the app to crash on devices prior to Liloppop since the Window#setStatusBarColor
API was introduced that API level.
We need to not use the said class on devices that do not have that API.
Tip: You can check which API Level the device is running by using the Version class
The DebugActivity can only found in the debug flavor of the app. It contains all sorts of debug settings in order to make debugging easier.
The activity is marked as a launcher activity, which means that it should also appear as a separate icon in the app launcher. Currently thought, it doesn't.
Just install the app and look at the installed launcher's app drawer.
The DebugActivity icon is missing
The launcher should display the DebugActivity icon
Hello there, I'd like to contribute to your awesome project by writing a Frequent Asked Questions for users self-service. Would love to hear from you, thanks.
Currently NamedayDatabaseRefresher contains two different methods to calculate the static and special namedays of the device's events respectively. The problem is that right now the NamedayDatabaseRefresher
does more than one things (queries the contacts, goes through them to find their namedays), breaking the Single Responsibility
principle. This makes it also hard to test.
The logic of the class needs to break down to smaller class so that we don't duplicate the logic between static and dynamic(special) namedays and make the class easy to test.
This is what i get everytime i try
Sent from my Sony F3211 using FastHub
Running aapt dump badging com.alexstyl.specialdates_3.7.apk
ends with aapt
throwing the error ERROR getting 'android:icon' attribute: attribute is not a string value
, exiting with code 1 – so tools using that (like fdroid-server while cataloging .apk
files) assume an error and reject the .apk
.
Just run aapt dump badging com.alexstyl.specialdates_3.7.apk
aapt
exiting with error code, fdroid-server rejecting the .apk
, update not in catalog.
Well, take your guess: Clean exit, of course :)
None. But:
I've applied a little Google-Fu, and found getting " 'android:icon' attribute: attribute is not a string value” error while uploading an APK to the play store at StackOverflow. Assumed source at my end is indicated by this answer. You've got a "permanent loop definition" in res/values/strings.xml
:
<string name="localised_app_name">@string/app_name</string>
…
<string name="app_name">@string/localised_app_name</string>
This wasn't the case with v3.6 (which doesn't cause that error):
<string name="localised_app_name">Memento Calendar</string>
…
<string name="app_name">@string/localised_app_name</string>
To confirm the issue, simply change back the localized_app_name
definition to an "explicite string", and run aapt
against the built package. If that fixes the issue, please replace the .apk
attached to the v3.7 release.
Thanks in advance!
Memento Calendar is a modern namedays app for Android. In this app you can see upcoming events like birthdays etc. of your contacts or you can also add a new event for your contact from the app in 'Add a new event section'. While adding a new event for your contacts you can also set profile pictures to your contacts from your gallery or from your camera. When you select camera to add a profile picture, your device camera will open and you need to click a new image. After clicking image the image will upload and show in contact image area (at place of blue area).
Today i installed Memento Namedays android app and after installing i came to main screen of where i can see list of my added events or i can add a new event on clicking the "+" button. I clicked on the "+" button to add a new event. After clicking on "+", a new page opened where i can create a new event with user image, contact name and event dates. I clicked on user image(the blue area with white user icon) to add contact image, select camera, click a new image and select ok. I came back to add event screen but the image i clicked from my camera is not uploaded at place of user image placeholder.
To reproduce the bug follow the following steps -
Now you see that your clicked image is not set as contact profile image.
* Device: Samsung J7 Prime
* Operating system: Android 7.0 Nougatt
* App Version: v11.2
Currently the app supports only Greek bankholidays. It would be nice to have some sort of mechanism to switch or enable multiple bankholidays.
There are probably multiple online APIs for bankholidays that can be used for fetching the bankholidays.
It will be more convenient for users,to some extent this is also design for ux.
Hi Sir @alexstyl ,
I am a designer and I did some tweaking in the existing logo that you might like. I saw the icon and I thought it's missing a mark for Memento that's why I incorporate the initial which is "M". I'm giving this for free if you want.
Best regards,
Tobaloidee
A user has requested to include the Latvian Extended Namedays into the app. They were also very kind to send me the
json file of them. What needs to be done is
As for the current Latvian namedays it should be renamed to Latvian Traditional
. The nameday selection dialog in the settings should write:
Link to Latvian Extended
: https://drive.google.com/open?id=0B7DmD0M2MtEsX0lTS2VKM1o4cFU
A guide on how to include Namedays can be found on the wiki.
Version info:
3.6-1408-gde569894
Application crashes when attempting to add a new contact that doesn't have an image associated
05-31 22:30:28.611 10636-12330/com.alexstyl.specialdates E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #6
Process: com.alexstyl.specialdates, PID: 10636
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:353)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object byte[].clone()' on a null object reference
at com.alexstyl.specialdates.images.DecodedImage.getBytes(DecodedImage.java:14)
at com.alexstyl.specialdates.addevent.OperationsFactory.updateImageContact(OperationsFactory.kt:105)
at com.alexstyl.specialdates.addevent.ContactOperations$ContactOperationsBuilder.updateContactImage(ContactOperations.java:76)
at com.alexstyl.specialdates.addevent.AddContactEventsPresenter$1.doInBackground(AddContactEventsPresenter.java:108)
at com.alexstyl.specialdates.addevent.AddContactEventsPresenter$1.doInBackground(AddContactEventsPresenter.java:100)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
App currently in Play Store crashes on Marshmallow, custom rom
App crashes.
More details in case that could matter: My XPeria Z was acting fishy and especially gave a lot of bluetooth problems. That much that my bluetooth headset stopped working. Before buying another phone, I decided to unlock the bootloader and flash another rom. I chose StryFlex - an AOSP Marshmallow based ROM, based on the original Sony rom for the XPeria ZX. The phone is working smoothly now and I have no more issues.
Except for Memento 😉
I checked out the most recent code, build and installed that one to see whether I could solve the problem myself. But that build works smoothly, except for the fact that the contact isn't displayed
FYI: I am using dummy crashlyticsKey
, androidVendingKey
and mixpanelKey
here and I even commented out apply plugin: 'com.google.gms.google-services'
in mobile/build.gradle to work around the missing google-services.json
. So maybe the error is somewhere inthere?
So I sent the crash report anyway. Maybe you can find the cause... Since it's obfuscated, I can't read the stacktrace :-)
At the end of this post is the logcat for the app installed using the Google Play Store. I included the entire logcat from the moment I start the application, not just the exception
For now, I'm going to install your all_events_create_event
branch on my phone, for which I'm very grateful :-)
01-21 14:11:42.064 645-3717/system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.alexstyl.specialdates/.ui.activity.MainActivity (has extras)} from uid 10117 on display 0
01-21 14:11:42.347 645-21331/system_process I/ActivityManager: Start proc 30884:com.alexstyl.specialdates/u0a187 for activity com.alexstyl.specialdates/.ui.activity.MainActivity
01-21 14:11:42.465 30884-30884/com.alexstyl.specialdates W/System: ClassLoader referenced unknown path: /data/app/com.alexstyl.specialdates-1/lib/arm
01-21 14:11:42.494 30884-30884/com.alexstyl.specialdates D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
01-21 14:11:42.503 30884-30884/com.alexstyl.specialdates D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
01-21 14:11:42.523 30884-30884/com.alexstyl.specialdates I/FA: App measurement is starting up, version: 9683
01-21 14:11:42.524 30884-30884/com.alexstyl.specialdates I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
01-21 14:11:42.551 30884-30884/com.alexstyl.specialdates I/FA: To enable faster debug mode event logging run:
adb shell setprop firebase.analytics.debug-mode com.alexstyl.specialdates
01-21 14:11:42.568 30884-30884/com.alexstyl.specialdates I/FirebaseInitProvider: FirebaseApp initialization successful
01-21 14:11:42.642 30884-30884/com.alexstyl.specialdates W/d: diskCache() and diskCacheFileNameGenerator() calls overlap each other
01-21 14:11:42.733 30884-30884/com.alexstyl.specialdates I/CrashlyticsCore: Initializing Crashlytics 2.3.8.97
01-21 14:11:42.785 30884-30895/com.alexstyl.specialdates I/art: Background partial concurrent mark sweep GC freed 17599(1282KB) AllocSpace objects, 18(360KB) LOS objects, 72% free, 1565KB/5MB, paused 14.007ms total 40.679ms
01-21 14:11:42.841 30884-30913/com.alexstyl.specialdates W/System: ClassLoader referenced unknown path: /system/framework/tcmclient.jar
01-21 14:11:42.939 30884-30884/com.alexstyl.specialdates W/MixpanelAPI.RsrcReader: Can't load names for Android view ids from 'com.alexstyl.specialdates.R$id', ids by name will not be available in the events editor.
01-21 14:11:42.939 30884-30884/com.alexstyl.specialdates I/MixpanelAPI.RsrcReader: You may be missing a Resources class for your package due to your proguard configuration, or you may be using an applicationId in your build that isn't the same as the package declared in your AndroidManifest.xml file.
If you're using proguard, you can fix this issue by adding the following to your proguard configuration:
-keep class **.R$* {
<fields>;
}
If you're not using proguard, or if your proguard configuration already contains the directive above, you can add the following to your AndroidManifest.xml file to explicitly point the Mixpanel library to the appropriate library for your resources class:
<meta-data android:name="com.mixpanel.android.MPConfig.ResourcePackageName" android:value="YOUR_PACKAGE_NAME" />
where YOUR_PACKAGE_NAME is the same string you use for the "package" attribute in your <manifest> tag.
01-21 14:11:42.970 30884-30884/com.alexstyl.specialdates D/MixpanelAPI.AL: To enable App Links tracking android.support.v4 must be installed: getInstance [class android.content.Context]
01-21 14:11:42.971 30884-30884/com.alexstyl.specialdates D/MixpanelAPI.AL: Please install the Bolts library >= 1.1.2 to track App Links: bolts.AppLinks
01-21 14:11:43.125 30884-30884/com.alexstyl.specialdates W/MixpanelAPI.ConfigurationChecker: com.mixpanel.android.surveys.a is not registered as an activity in your application, so surveys can't be shown.
01-21 14:11:43.125 30884-30884/com.alexstyl.specialdates I/MixpanelAPI.ConfigurationChecker: Please add the child tag <activity android:name="com.mixpanel.android.surveys.SurveyActivity" /> to your <application> tag.
01-21 14:11:43.197 30884-30937/com.alexstyl.specialdates D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
01-21 14:11:43.293 30884-30937/com.alexstyl.specialdates I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb
01-21 14:11:43.297 30884-30937/com.alexstyl.specialdates I/OpenGLRenderer: Initialized EGL, version 1.4
01-21 14:11:43.471 645-664/system_process I/ActivityManager: Displayed com.alexstyl.specialdates/.ui.activity.MainActivity: +1s145ms
01-21 14:11:43.644 30884-30903/com.alexstyl.specialdates I/FA: Tag Manager is not found and thus will not be used
--------- beginning of crash
01-21 14:11:45.338 30884-30935/com.alexstyl.specialdates E/AndroidRuntime: FATAL EXCEPTION: ModernAsyncTask #1
Process: com.alexstyl.specialdates, PID: 30884
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.support.v4.b.k$3.done(ModernAsyncTask.java:161)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: 29/2/2017 is invalid
at com.alexstyl.specialdates.c.c.a(Date.java:48)
at com.alexstyl.specialdates.events.b.b$a.a(PeopleEventsContract.java:55)
at com.alexstyl.specialdates.events.b.b$a.a(PeopleEventsContract.java:30)
at com.alexstyl.specialdates.service.a.b(PeopleEventsProvider.java:193)
at com.alexstyl.specialdates.service.a.a(PeopleEventsProvider.java:149)
at com.alexstyl.specialdates.upcoming.l.B(UpcomingEventsLoader.java:59)
at com.alexstyl.specialdates.upcoming.l.d(UpcomingEventsLoader.java:29)
at android.support.v4.b.a.e(AsyncTaskLoader.java:299)
at android.support.v4.b.a$a.a(AsyncTaskLoader.java:57)
at android.support.v4.b.a$a.a(AsyncTaskLoader.java:45)
at android.support.v4.b.k$2.call(ModernAsyncTask.java:138)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
01-21 14:11:45.345 645-21331/system_process W/ActivityManager: Force finishing activity com.alexstyl.specialdates/.ui.activity.MainActivity
01-21 14:11:45.354 30884-30893/com.alexstyl.specialdates W/CursorWrapperInner: Cursor finalized without prior close()
01-21 14:11:46.125 30884-30916/com.alexstyl.specialdates I/CrashlyticsCore: Crashlytics report upload complete: 58835E0E030B-0001-78A4-2590DBC70216.cls
Short Description
Steps to reproduce and Results
Video
What I just wrote, can be visible with the following gif:
Some people mention that sometimes the application does not show an notification to them. This is probably do to this:
ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
added in API level 23
String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
Activity Action: Show screen for controlling which apps can ignore battery optimizations.
Input: Nothing.
Output: Nothing.
You can use PowerManager.isIgnoringBatteryOptimizations() to determine if an application is already ignoring optimizations. You can use ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS to ask the user to put you on this list.
Constant Value: "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS"
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
added in API level 23
String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Activity Action: Ask the user to allow an app to ignore battery optimizations (that is, put them on the whitelist of apps shown by ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS). For an app to use this, it also must hold the REQUEST_IGNORE_BATTERY_OPTIMIZATIONS permission.
Note: most applications should not use this; there are many facilities provided by the platform for applications to operate correctly in the various power saving modes. This is only for unusual applications that need to deeply control their own execution, at the potential expense of the user's battery life. Note that these applications greatly run the risk of showing to the user as high power consumers on their device.
Input: The Intent's data URI must specify the application package name to be shown, with the "package" scheme. That is "package:com.my.app".
Output: Nothing.
You can use PowerManager.isIgnoringBatteryOptimizations() to determine if an application is already ignoring optimizations.
Constant Value: "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
https://developer.android.com/reference/android/provider/Settings.html#ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
To provide a good and future-proof fallback for Event labels in notifications, I duplicated the getLabelFor()
code from ContactEventView
.
This duplication must be refactored so that the same code can be used in ContactEventView
as well as in Notifier
.
hi@alexatyl,I am a graphic designer, I want to help you in graphic design.
After I review your project, your app is very good. Therefore I suggest a new logo and icon for you. If you want it, I will design it for you and it's free.
// TODO fill this later
Review form Play Store:
Αν πας να προσθέσεις συμβάν, αλλά το μετανιώσεις και το ακυρώσεις, ρωτάει "Discard changes?" και οι επιλογές είναι "Ακύρωση" και "Ακύρωση"...
I have received a request to include the Hungarian Namedays.
The steps how to include Namedays in the app can be found in the wiki. All this would take is to parse the given file and extract the namedays.
Static analysis was recently added to the project (#141). Initially the project contained a lot of issues that were pointed out by the analysis. Because of that some threshold was added to the warnings and errors so that it would not be a blocker for further development.
Ideally, the threshold should be 0 errors and 0 warnings (0/0), so that future new issues are identified before being introduced to the code base.
Open the terminal at the directory of the root of the project and run
./gradlew check
The configuration files you need to check in order to modify the thresholds are:
team-props/static-analysis/detekt-config.yml
and
team-props/static-analysis.gradle
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.