mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-07 01:28:52 -06:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 957a5b7c17 | |||
| 64cc9f78a8 | |||
| e50c411d1e | |||
| ce27773138 |
@@ -1,5 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### 1.7.11 (Aug 10, 2019)
|
||||||
|
|
||||||
|
* Fix bug that produced corrupted CSV files in some countries
|
||||||
|
|
||||||
|
### 1.7.10 (June 15, 2019)
|
||||||
|
|
||||||
|
* Fix bug that prevented some devices from showing notifications.
|
||||||
|
* Update targetSdk to Android Pie (API level 28)
|
||||||
|
|
||||||
### 1.7.8 (April 21, 2018)
|
### 1.7.8 (April 21, 2018)
|
||||||
|
|
||||||
* Add support for adaptive icons (Oreo)
|
* Add support for adaptive icons (Oreo)
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ apply plugin: 'jacoco'
|
|||||||
apply plugin: 'com.github.triplet.play'
|
apply plugin: 'com.github.triplet.play'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 27
|
compileSdkVersion 28
|
||||||
buildToolsVersion "27.0.3"
|
buildToolsVersion "28.0.3"
|
||||||
|
|
||||||
// signingConfigs {
|
// signingConfigs {
|
||||||
// release {
|
// release {
|
||||||
@@ -27,7 +27,7 @@ android {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.isoron.uhabits"
|
applicationId "org.isoron.uhabits"
|
||||||
minSdkVersion 15
|
minSdkVersion 15
|
||||||
targetSdkVersion 27
|
targetSdkVersion 28
|
||||||
|
|
||||||
buildConfigField "Integer", "databaseVersion", "15"
|
buildConfigField "Integer", "databaseVersion", "15"
|
||||||
buildConfigField "String", "databaseFilename", "\"uhabits.db\""
|
buildConfigField "String", "databaseFilename", "\"uhabits.db\""
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
<manifest
|
<manifest
|
||||||
package="org.isoron.uhabits"
|
package="org.isoron.uhabits"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:versionCode="36"
|
android:versionCode="38"
|
||||||
android:versionName="1.7.9">
|
android:versionName="1.7.11">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public class HabitsCSVExporter
|
|||||||
{
|
{
|
||||||
String sane = sanitizeFilename(h.getName());
|
String sane = sanitizeFilename(h.getName());
|
||||||
String habitDirName =
|
String habitDirName =
|
||||||
String.format("%03d %s", allHabits.indexOf(h) + 1, sane);
|
String.format(Locale.US, "%03d %s", allHabits.indexOf(h) + 1, sane);
|
||||||
habitDirName = habitDirName.trim() + "/";
|
habitDirName = habitDirName.trim() + "/";
|
||||||
|
|
||||||
new File(exportDirName + habitDirName).mkdirs();
|
new File(exportDirName + habitDirName).mkdirs();
|
||||||
@@ -202,7 +202,7 @@ public class HabitsCSVExporter
|
|||||||
checksWriter.write(String.valueOf(checkmarks.get(j)[i]));
|
checksWriter.write(String.valueOf(checkmarks.get(j)[i]));
|
||||||
checksWriter.write(DELIMITER);
|
checksWriter.write(DELIMITER);
|
||||||
String score =
|
String score =
|
||||||
String.format("%.4f", ((float) scores.get(j)[i]) / Score.MAX_VALUE);
|
String.format(Locale.US, "%.4f", ((float) scores.get(j)[i]) / Score.MAX_VALUE);
|
||||||
scoresWriter.write(score);
|
scoresWriter.write(score);
|
||||||
scoresWriter.write(DELIMITER);
|
scoresWriter.write(DELIMITER);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ public abstract class ScoreList implements Iterable<Score>
|
|||||||
{
|
{
|
||||||
String timestamp = dateFormat.format(s.getTimestamp());
|
String timestamp = dateFormat.format(s.getTimestamp());
|
||||||
String score =
|
String score =
|
||||||
String.format("%.4f", ((float) s.getValue()) / Score.MAX_VALUE);
|
String.format(Locale.US, "%.4f", ((float) s.getValue()) / Score.MAX_VALUE);
|
||||||
out.write(String.format("%s,%s\n", timestamp, score));
|
out.write(String.format("%s,%s\n", timestamp, score));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,7 +239,13 @@ public class NotificationTray
|
|||||||
|
|
||||||
createAndroidNotificationChannel(context);
|
createAndroidNotificationChannel(context);
|
||||||
int notificationId = getNotificationId(habit);
|
int notificationId = getNotificationId(habit);
|
||||||
notificationManager.notify(notificationId, builder.build());
|
|
||||||
|
try {
|
||||||
|
notificationManager.notify(notificationId, builder.build());
|
||||||
|
} catch(RuntimeException e) {
|
||||||
|
builder.setSound(null);
|
||||||
|
notificationManager.notify(notificationId, builder.build());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldShowReminderToday()
|
private boolean shouldShowReminderToday()
|
||||||
|
|||||||
Reference in New Issue
Block a user