Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some tweaks to the app (fixed duplicates and added option to show age this year) #4

Open
wants to merge 36 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
97cc926
Fixed problem with duplicated accounts getting created.
Mar 4, 2018
b90a9b5
Reworked the way separators are handled.
Mar 4, 2018
bdee6f3
Updated romanian translation.
Mar 4, 2018
d5e9041
Added ability to add multiple notifications beforehand for the same p…
Mar 9, 2018
19588e1
Added ability to notify about anniversaries, custom anniversaries as …
Mar 14, 2018
dd20e04
Reworked alarms so that the app no longer creates a separate alarm fo…
Apr 17, 2018
d3c17be
Fixed famous persons after switching to LocalDate from joda-time.
Apr 18, 2018
9d70f14
Switched package from com.djonique.birtydas to com.eblis.whenwasit.
Jul 28, 2018
706f893
When ads are disabled show a final rewards ad.
Jul 29, 2018
f22f55d
If rewards ad fails to load don't keep trying to load it.
Jul 29, 2018
c2b7e07
Fixed NPEs when switching from knowing year and not knowing year when…
Aug 1, 2018
50bca08
Fixed problem where you couldn't add multiple contacts, they would al…
Aug 11, 2018
b60e2d0
Attempt to fix crash on Settings loading for the first time.
Aug 31, 2018
0086be9
Added contact pictures in details page and birthday notification.
Sep 1, 2018
aba5343
Fixed crash on Android Pie
Sep 1, 2018
7747c61
Added banner file
Sep 1, 2018
6c5272e
Added profile pictures in month view and default list view.
Sep 14, 2018
ea3ad8b
Added ability to import contacts automatically every day (enabled by …
Sep 15, 2018
b2111b3
Guard against null pointer cursor when retrieving contacts.
Oct 13, 2018
29ca6c9
Attempt to guard against native errors when retrieving phone numbers.
Oct 13, 2018
cdba1a8
Update french wording
claireduf Nov 27, 2018
1a91f6c
Replace last occurences of name Birdays by WhenWasIt
claireduf Nov 29, 2018
9d0d772
Merge pull request #1 from claireduf/master
eblis Nov 29, 2018
d3e4858
Updated version number.
Nov 30, 2018
ed2e810
If rewards video fails to load just continue.
Nov 30, 2018
45585cb
Added note about recommended way of adding birthdays.
Jan 11, 2019
05dc61a
Added contact category and ability to add/edit it as well as search f…
Jan 12, 2019
8ac6f62
Added ability to contact users via WhatsApp and also allow them to se…
Feb 10, 2019
bf11d01
Fixed import/export to XML.
Mar 5, 2019
966056d
Fixed widget no longer working.
Mar 5, 2019
c67f533
Guard against invalid persons being added to the db.
Mar 9, 2019
e280928
Fixed problem with birthdays showing incorrect date when switching be…
Apr 13, 2019
53ce56a
Updating libraries and versions
eblis Apr 12, 2022
ae31cbe
Use a default person if we can't find it instead of null (avoids cras…
eblis Apr 20, 2022
88b4734
Use a default person if we can't find it instead of null (avoids cras…
eblis Feb 2, 2023
1202a32
Updated resources too at some point, check them in
eblis Feb 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions PRIVACY POLICY.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<html>
<body>
<h2>Privacy Policy</h2>
<p>Evgeny Timofeev built the Birdays app as an open source app. This SERVICE is provided by Evgeny Timofeev at no cost and is intended
for use as is.</p>
<p>Evgeny Timofeev originally built the Birdays app as an open source app. This SERVICE is provided by Evgeny Timofeev at no cost and is intended
for use as is. Cristian Libotean made changes to the application and also renamed it WhenWasIt.</p>
<p>This page is used to inform website visitors regarding my policies with the collection, use, and
disclosure of Personal Information if anyone decided to use my Service.</p>
<p>If you choose to use my Service, then you agree to the collection and use of information in
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## Birdays
## WhenWasIt
*Simple birthday app with widget and famous people's birthdays.*

**[Install on Google Play](https://play.google.com/store/apps/details?id=com.djonique.birdays)**
**[Install on Google Play](https://play.google.com/store/apps/details?id=com.eblis.whenwasit)**

## Translators
Serhii Ponomarenko (Ukrainian) [mellangr](https://github.com/mellangr)

Expand Down Expand Up @@ -30,10 +31,13 @@ Omer Surer (Turkish)
Xiupeng (Chinese traditional)

Andra Fetele (Romanian) [sarmizegetusaa](https://github.com/sarmizegetusaa)

Claire Dufetrelle (French) [claireduf](https://github.com/claireduf)
## License

```
Copyright 2017 Evgeny Timofeev
Copyright 2018-2023 Cristian Libotean

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
92 changes: 52 additions & 40 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,85 +16,97 @@

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.crashlytics'

def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {
compileSdkVersion 27
buildToolsVersion '27.0.2'

signingConfigs {
signing {
keyAlias keystoreProperties['KeyAlias']
keyPassword keystoreProperties['KeyPassword']
storeFile file(keystoreProperties['KeyLocation'])
storePassword keystoreProperties['KeyPassword']
}
}
compileSdkVersion 33
defaultConfig {
applicationId "com.djonique.birdays"
minSdkVersion 16
targetSdkVersion 27
versionCode 18
versionName "1.5.1"
resConfigs "auto"
applicationId "com.eblis.whenwasit"
multiDexEnabled true
minSdkVersion 19
targetSdkVersion 33
versionCode 46
versionName "2.1.${versionCode}"
resConfigs 'en', 'be', 'de', 'el', 'es', 'fil', 'fr', 'hu', 'in', 'it', 'ja', 'kab', 'kk', 'nb', 'nl', 'pt', 'ro', 'ru', 'tr', 'uk', 'zh'
vectorDrawables.useSupportLibrary = true
resValue "string", "version_name", versionName
manifestPlaceholders = [fabric_api_key: keystoreProperties['FabricApiKey']]
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}

buildTypes {
debug {
minifyEnabled false
resValue "string", "banner_ad_id", keystoreProperties['BannerAdIdDebug']
buildConfigField "String", "ADMOB_ID", keystoreProperties['AdMobId']
buildConfigField "String", "REWARDS_AD_ID", keystoreProperties['RewardsAdIdDebug']
buildConfigField "String", "INTERSTITIAL_AD_ID", keystoreProperties['InterstitialAdIdDebug']
signingConfig signingConfigs.signing
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "banner_ad_id", keystoreProperties['BannerAdIdRelease']
buildConfigField "String", "ADMOB_ID", keystoreProperties['AdMobId']
buildConfigField "String", "REWARDS_AD_ID", keystoreProperties['RewardsAdIdRelease']
buildConfigField "String", "INTERSTITIAL_AD_ID", keystoreProperties['InterstitialAdIdRelease']
signingConfig signingConfigs.signing
firebaseCrashlytics {
mappingFileUploadEnabled false
}
}
}
lint {
abortOnError false
}
}

repositories {
maven { url 'https://maven.fabric.io/public' }
}

def androidSupportVersion = '27.0.2'
def firebaseVersion = '11.6.2'
def butterKnifeVersion = '8.8.1'

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')

implementation 'com.android.support:multidex:1.0.3'
implementation fileTree(include: ['*.jar'], dir: 'libs')
// Android support library
compile "com.android.support:appcompat-v7:${androidSupportVersion}"
compile "com.android.support:design:${androidSupportVersion}"
compile "com.android.support:recyclerview-v7:${androidSupportVersion}"
compile "com.android.support:cardview-v7:${androidSupportVersion}"
compile "com.android.support:support-v4:${androidSupportVersion}"
compile "com.android.support:support-vector-drawable:${androidSupportVersion}"

implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
// Firebase
compile "com.google.firebase:firebase-core:${firebaseVersion}"
compile "com.google.firebase:firebase-ads:${firebaseVersion}"
compile "com.google.firebase:firebase-perf:${firebaseVersion}"

implementation "com.google.firebase:firebase-core:21.1.1"
implementation "com.google.firebase:firebase-ads:21.5.0"
implementation "com.google.firebase:firebase-perf:20.3.1"
//ads
implementation "com.google.android.gms:play-services-ads:21.5.0"
// ButterKnife
compile "com.jakewharton:butterknife:${butterKnifeVersion}"
annotationProcessor "com.jakewharton:butterknife-compiler:${butterKnifeVersion}"

implementation "com.jakewharton:butterknife:10.2.3"
implementation "com.google.firebase:firebase-crashlytics:18.3.3"
implementation "com.google.firebase:firebase-analytics:21.2.0"
annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3"
// Material date and time picker
compile 'com.wdullaer:materialdatetimepicker:3.4.1'

implementation 'com.wdullaer:materialdatetimepicker:3.4.1'
// Rate this app
compile 'io.github.kobakei:ratethisapp:1.2.0'

implementation 'io.github.kobakei:ratethisapp:1.2.0'
//implementation 'net.danlew:android.joda:2.9.9.3'
implementation 'joda-time:joda-time:2.9.9'
// Crashlytics
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true
}

// JUnit
testCompile 'junit:junit:4.12'
testImplementation 'junit:junit:4.13.2'
}

apply plugin: 'com.google.gms.google-services'
4 changes: 4 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@
-keepattributes SourceFile,LineNumberTable
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-dontwarn com.google.android.gms.**
-dontwarn com.google.ads.**
-dontwarn org.joda.time.**
-keep public class * extends android.support.*.preference.Preference
53 changes: 45 additions & 8 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.djonique.birdays"
package="com.eblis.whenwasit"
android:installLocation="internalOnly">

<uses-permission android:name="android.permission.INTERNET" />
Expand All @@ -28,12 +28,23 @@
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
<uses-permission android:name="com.huawei.permission.external_app_settings.USE_COMPONENT"/>

<queries>
<package android:name="com.eblis.whenwasit" />
<package android:name="com.eblis.whenwasit.alarm"/>
<intent>
<action android:name="com.eblis.whenwasit.alarm.AlarmHelper"/>
</intent>
</queries>

<application
android:allowBackup="true"
android:fullBackupContent="@xml/backup_scheme"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_main_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_main_icon"
android:supportsRtl="true"
android:theme="@style/BirdaysTheme"
tools:ignore="GoogleAppIndexingWarning">
Expand All @@ -46,16 +57,20 @@
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />

<!-- Fabric Crashlytics -->
<meta-data
android:name="io.fabric.ApiKey"
android:value="${fabric_api_key}" />

<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-6034779980737202~6440072426"/>

<!-- MainActivity -->
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:theme="@style/BirdaysTheme.NoActionBar">
android:theme="@style/BirdaysTheme.NoActionBar"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down Expand Up @@ -107,10 +122,22 @@
<!-- AlarmReceiver -->
<receiver
android:name=".alarm.AlarmReceiver"
android:process=":remote" />
android:process=":process"
android:exported="true"
android:enabled="true"
android:permission="">
<intent-filter>
<action android:name=".alarm.AlarmHelper"/>
</intent-filter>
<meta-data
android:name=".alarm.AlarmReceiver"
android:value=".activities.DetailActivity"
/>
</receiver>

<!-- AlarmSetter -->
<receiver android:name=".alarm.AlarmSetter">
<receiver android:name=".alarm.AlarmSetter"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
Expand All @@ -119,7 +146,8 @@
<!-- WidgetProvider-->
<receiver
android:name=".widget.WidgetProvider"
android:label="@string/app_name">
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
Expand All @@ -128,9 +156,18 @@
android:resource="@xml/widget" />
</receiver>

<activity android:name="com.eblis.whenwasit.activities.WidgetSettingsActivity"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>

<!-- WidgetService -->
<service
android:name=".widget.WidgetService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
</application>
</manifest>
Loading