Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/davx5-ose.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2016-10-04 17:12:44 +0300
committerRicki Hirner <hirner@bitfire.at>2016-10-04 17:12:44 +0300
commit80b1bb8ee2bf8e5b384949185c9f6e9bf003c86a (patch)
tree1196c83545ac44a4dc2e5db8b466f42446116f88
parente558c451398d9775cc94ada6905dfcb24aa73461 (diff)
Android 4.0/4.1 fixesv1.3.2.1
* require API level 15 for TransactionTooLargeException * use SQLite WAL only on API level 16+ * various database access, provider access and UI fixes
-rw-r--r--app/build.gradle12
-rw-r--r--app/src/davdroid/java/at/bitfire/davdroid/ui/setup/DefaultLoginCredentialsFragment.java1
-rw-r--r--app/src/main/java/at/bitfire/davdroid/model/ServiceDB.java23
-rw-r--r--app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java9
-rw-r--r--app/src/main/java/at/bitfire/davdroid/resource/LocalEvent.java8
-rw-r--r--app/src/main/java/at/bitfire/davdroid/syncadapter/SyncAdapterService.java6
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.java68
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.java1
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/AppSettingsActivity.java1
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/DebugInfoActivity.java1
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/StartupDialogFragment.java6
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java1
-rw-r--r--app/src/main/res/menu/activity_account.xml5
m---------ical4android0
m---------vcard4android0
15 files changed, 68 insertions, 74 deletions
diff --git a/app/build.gradle b/app/build.gradle
index c9c98e4b..d08be514 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,16 +10,16 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 24
- buildToolsVersion '24.0.2'
+ buildToolsVersion '24.0.3'
defaultConfig {
applicationId "at.bitfire.davdroid"
resValue "string", "packageID", applicationId
- versionCode 118
+ versionCode 119
buildConfigField "long", "buildTime", System.currentTimeMillis() + "L"
- minSdkVersion 14
+ minSdkVersion 15
targetSdkVersion 24
buildConfigField "boolean", "customCerts", "false"
@@ -29,18 +29,18 @@ android {
productFlavors {
standard {
- versionName "1.3.2"
+ versionName "1.3.2.1"
buildConfigField "boolean", "customCerts", "true"
}
gplay {
- versionName "1.3.2-gplay"
+ versionName "1.3.2.1-gplay"
buildConfigField "boolean", "customCerts", "true"
}
icloud {
applicationId "at.bitfire.cloudsync"
resValue "string", "packageID", applicationId
- versionName "1.3.2-cloud"
+ versionName "1.3.2.1-cloud"
buildConfigField "at.bitfire.vcard4android.GroupMethod", "settingContactGroupMethod", "at.bitfire.vcard4android.GroupMethod.GROUP_VCARDS"
buildConfigField "Boolean", "settingVCardRFC6868", "true"
diff --git a/app/src/davdroid/java/at/bitfire/davdroid/ui/setup/DefaultLoginCredentialsFragment.java b/app/src/davdroid/java/at/bitfire/davdroid/ui/setup/DefaultLoginCredentialsFragment.java
index 76692c5e..612b7194 100644
--- a/app/src/davdroid/java/at/bitfire/davdroid/ui/setup/DefaultLoginCredentialsFragment.java
+++ b/app/src/davdroid/java/at/bitfire/davdroid/ui/setup/DefaultLoginCredentialsFragment.java
@@ -18,7 +18,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
diff --git a/app/src/main/java/at/bitfire/davdroid/model/ServiceDB.java b/app/src/main/java/at/bitfire/davdroid/model/ServiceDB.java
index 9e689435..9b3a5ab6 100644
--- a/app/src/main/java/at/bitfire/davdroid/model/ServiceDB.java
+++ b/app/src/main/java/at/bitfire/davdroid/model/ServiceDB.java
@@ -14,7 +14,11 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
+import android.support.annotation.RequiresApi;
+import java.util.logging.Level;
+
+import aQute.service.reporter.Messages;
import at.bitfire.davdroid.App;
import lombok.Cleanup;
@@ -72,21 +76,19 @@ public class ServiceDB {
public OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
- setWriteAheadLoggingEnabled(true);
}
@Override
public void onOpen(SQLiteDatabase db) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
- db.setForeignKeyConstraintsEnabled(true);
- else {
- if (!db.enableWriteAheadLogging())
- App.log.warning("Couldn't enable write-ahead logging");
-
+ if (Build.VERSION.SDK_INT < 16)
db.execSQL("PRAGMA foreign_keys=ON;");
- }
+ }
+
+ @Override
+ @RequiresApi(16)
+ public void onConfigure(SQLiteDatabase db) {
+ setWriteAheadLoggingEnabled(true);
+ db.setForeignKeyConstraintsEnabled(true);
}
@Override
@@ -132,6 +134,7 @@ public class ServiceDB {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ // no different versions yet
}
diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java
index 714b274e..d76a70f8 100644
--- a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java
+++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java
@@ -9,14 +9,12 @@
package at.bitfire.davdroid.resource;
import android.accounts.Account;
-import android.annotation.TargetApi;
import android.content.ContentProviderClient;
import android.content.ContentProviderOperation;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
-import android.os.Build;
import android.os.RemoteException;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Calendars;
@@ -85,7 +83,6 @@ public class LocalCalendar extends AndroidCalendar implements LocalCollection {
update(valuesFromCollectionInfo(info, updateColor));
}
- @TargetApi(15)
private static ContentValues valuesFromCollectionInfo(CollectionInfo info, boolean withColor) {
ContentValues values = new ContentValues();
values.put(Calendars.NAME, info.url);
@@ -108,10 +105,8 @@ public class LocalCalendar extends AndroidCalendar implements LocalCollection {
values.put(Calendars.CALENDAR_TIME_ZONE, DateUtils.findAndroidTimezoneID(timeZone.getTimeZoneId().getValue()));
}
values.put(Calendars.ALLOWED_REMINDERS, Reminders.METHOD_ALERT);
- if (Build.VERSION.SDK_INT >= 15) {
- values.put(Calendars.ALLOWED_AVAILABILITY, StringUtils.join(new int[] { Reminders.AVAILABILITY_TENTATIVE, Reminders.AVAILABILITY_FREE, Reminders.AVAILABILITY_BUSY }, ","));
- values.put(Calendars.ALLOWED_ATTENDEE_TYPES, StringUtils.join(new int[] { CalendarContract.Attendees.TYPE_OPTIONAL, CalendarContract.Attendees.TYPE_REQUIRED, CalendarContract.Attendees.TYPE_RESOURCE }, ", "));
- }
+ values.put(Calendars.ALLOWED_AVAILABILITY, StringUtils.join(new int[] { Reminders.AVAILABILITY_TENTATIVE, Reminders.AVAILABILITY_FREE, Reminders.AVAILABILITY_BUSY }, ","));
+ values.put(Calendars.ALLOWED_ATTENDEE_TYPES, StringUtils.join(new int[] { CalendarContract.Attendees.TYPE_OPTIONAL, CalendarContract.Attendees.TYPE_REQUIRED, CalendarContract.Attendees.TYPE_RESOURCE }, ", "));
return values;
}
diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalEvent.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalEvent.java
index d2617c72..858d8d20 100644
--- a/app/src/main/java/at/bitfire/davdroid/resource/LocalEvent.java
+++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalEvent.java
@@ -68,8 +68,12 @@ public class LocalEvent extends AndroidEvent implements LocalResource {
event.uid = values.getAsString(COLUMN_UID);
event.sequence = values.getAsInteger(COLUMN_SEQUENCE);
- if (values.getAsInteger(Events.IS_ORGANIZER) == 0)
- weAreOrganizer = false;
+ if (Build.VERSION.SDK_INT >= 17)
+ weAreOrganizer = values.getAsInteger(Events.IS_ORGANIZER) != 0;
+ else {
+ String organizer = values.getAsString(Events.ORGANIZER);
+ weAreOrganizer = organizer == null || organizer.equals(calendar.account.name);
+ }
}
@Override
diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncAdapterService.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncAdapterService.java
index 2cfdfae0..2a7d23b9 100644
--- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncAdapterService.java
+++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncAdapterService.java
@@ -10,7 +10,6 @@ package at.bitfire.davdroid.syncadapter;
import android.accounts.Account;
import android.app.Notification;
-import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.AbstractThreadedSyncAdapter;
@@ -18,7 +17,6 @@ import android.content.ContentProviderClient;
import android.content.Context;
import android.content.Intent;
import android.content.SyncResult;
-import android.graphics.drawable.BitmapDrawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
@@ -30,8 +28,6 @@ import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
-//import com.android.vending.billing.IInAppBillingService;
-
import org.apache.commons.collections4.IteratorUtils;
import java.util.List;
@@ -44,6 +40,8 @@ import at.bitfire.davdroid.Constants;
import at.bitfire.davdroid.R;
import at.bitfire.davdroid.ui.PermissionsActivity;
+//import com.android.vending.billing.IInAppBillingService;
+
public abstract class SyncAdapterService extends Service {
abstract protected AbstractThreadedSyncAdapter syncAdapter();
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.java
index ed6bf07b..438bc097 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.java
@@ -357,14 +357,12 @@ public class AccountActivity extends AppCompatActivity implements Toolbar.OnMenu
private static class AccountLoader extends AsyncTaskLoader<AccountInfo> implements DavService.RefreshingStatusListener, ServiceConnection, SyncStatusObserver {
private final Account account;
- private final OpenHelper dbHelper;
private DavService.InfoBinder davService;
private Object syncStatusListener;
public AccountLoader(Context context, Account account) {
super(context);
this.account = account;
- dbHelper = new OpenHelper(context);
}
@Override
@@ -409,41 +407,39 @@ public class AccountActivity extends AppCompatActivity implements Toolbar.OnMenu
@Override
public AccountInfo loadInBackground() {
AccountInfo info = new AccountInfo();
- try {
- SQLiteDatabase db = dbHelper.getReadableDatabase();
-
- @Cleanup Cursor cursor = db.query(
- Services._TABLE,
- new String[] { Services.ID, Services.SERVICE },
- Services.ACCOUNT_NAME + "=?", new String[] { account.name },
- null, null, null);
-
- if (cursor.getCount() == 0)
- // no services, account not useable
- return null;
-
- while (cursor.moveToNext()) {
- long id = cursor.getLong(0);
- String service = cursor.getString(1);
- if (Services.SERVICE_CARDDAV.equals(service)) {
- info.carddav = new AccountInfo.ServiceInfo();
- info.carddav.id = id;
- info.carddav.refreshing = davService.isRefreshing(id) || ContentResolver.isSyncActive(account, ContactsContract.AUTHORITY);
- info.carddav.hasHomeSets = hasHomeSets(db, id);
- info.carddav.collections = readCollections(db, id);
-
- } else if (Services.SERVICE_CALDAV.equals(service)) {
- info.caldav = new AccountInfo.ServiceInfo();
- info.caldav.id = id;
- info.caldav.refreshing = davService.isRefreshing(id) ||
- ContentResolver.isSyncActive(account, CalendarContract.AUTHORITY) ||
- ContentResolver.isSyncActive(account, TaskProvider.ProviderName.OpenTasks.authority);
- info.caldav.hasHomeSets = hasHomeSets(db, id);
- info.caldav.collections = readCollections(db, id);
- }
+
+ @Cleanup OpenHelper dbHelper = new OpenHelper(getContext());
+ SQLiteDatabase db = dbHelper.getReadableDatabase();
+
+ @Cleanup Cursor cursor = db.query(
+ Services._TABLE,
+ new String[] { Services.ID, Services.SERVICE },
+ Services.ACCOUNT_NAME + "=?", new String[] { account.name },
+ null, null, null);
+
+ if (cursor.getCount() == 0)
+ // no services, account not useable
+ return null;
+
+ while (cursor.moveToNext()) {
+ long id = cursor.getLong(0);
+ String service = cursor.getString(1);
+ if (Services.SERVICE_CARDDAV.equals(service)) {
+ info.carddav = new AccountInfo.ServiceInfo();
+ info.carddav.id = id;
+ info.carddav.refreshing = davService.isRefreshing(id) || ContentResolver.isSyncActive(account, ContactsContract.AUTHORITY);
+ info.carddav.hasHomeSets = hasHomeSets(db, id);
+ info.carddav.collections = readCollections(db, id);
+
+ } else if (Services.SERVICE_CALDAV.equals(service)) {
+ info.caldav = new AccountInfo.ServiceInfo();
+ info.caldav.id = id;
+ info.caldav.refreshing = davService.isRefreshing(id) ||
+ ContentResolver.isSyncActive(account, CalendarContract.AUTHORITY) ||
+ ContentResolver.isSyncActive(account, TaskProvider.ProviderName.OpenTasks.authority);
+ info.caldav.hasHomeSets = hasHomeSets(db, id);
+ info.caldav.collections = readCollections(db, id);
}
- } finally {
- dbHelper.close();
}
return info;
}
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.java
index e158681a..62ef2c42 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.java
@@ -29,7 +29,6 @@ import android.widget.ListView;
import android.widget.TextView;
import at.bitfire.davdroid.AccountsChangedReceiver;
-import at.bitfire.davdroid.Constants;
import at.bitfire.davdroid.R;
public class AccountListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Account[]>, AdapterView.OnItemClickListener {
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/AppSettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/AppSettingsActivity.java
index 8b1e8b18..a5e5e3b6 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/AppSettingsActivity.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/AppSettingsActivity.java
@@ -20,7 +20,6 @@ import at.bitfire.davdroid.App;
import at.bitfire.davdroid.R;
import at.bitfire.davdroid.model.ServiceDB;
import at.bitfire.davdroid.model.Settings;
-import lombok.Cleanup;
public class AppSettingsActivity extends AppCompatActivity {
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/DebugInfoActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/DebugInfoActivity.java
index d4712045..17d2db09 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/DebugInfoActivity.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/DebugInfoActivity.java
@@ -42,7 +42,6 @@ import at.bitfire.dav4android.exception.HttpException;
import at.bitfire.davdroid.AccountSettings;
import at.bitfire.davdroid.App;
import at.bitfire.davdroid.BuildConfig;
-import at.bitfire.davdroid.Constants;
import at.bitfire.davdroid.InvalidAccountException;
import at.bitfire.davdroid.R;
import at.bitfire.davdroid.model.ServiceDB;
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/StartupDialogFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/StartupDialogFragment.java
index 689eeb0c..7c5e04b7 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/StartupDialogFragment.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/StartupDialogFragment.java
@@ -15,6 +15,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
@@ -101,8 +102,6 @@ public class StartupDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
setCancelable(false);
- final ServiceDB.OpenHelper dbHelper = new ServiceDB.OpenHelper(getContext());
-
Mode mode = Mode.valueOf(getArguments().getString(ARGS_MODE));
switch (mode) {
case BATTERY_OPTIMIZATIONS:
@@ -125,6 +124,7 @@ public class StartupDialogFragment extends DialogFragment {
.setNegativeButton(R.string.startup_dont_show_again, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
+ @Cleanup ServiceDB.OpenHelper dbHelper = new ServiceDB.OpenHelper(getContext());
Settings settings = new Settings(dbHelper.getWritableDatabase());
settings.putBoolean(HINT_BATTERY_OPTIMIZATIONS, false);
}
@@ -175,6 +175,7 @@ public class StartupDialogFragment extends DialogFragment {
.setNegativeButton(R.string.startup_dont_show_again, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
+ @Cleanup ServiceDB.OpenHelper dbHelper = new ServiceDB.OpenHelper(getContext());
Settings settings = new Settings(dbHelper.getWritableDatabase());
settings.putBoolean(HINT_GOOGLE_PLAY_ACCOUNTS_REMOVED, false);
}
@@ -207,6 +208,7 @@ public class StartupDialogFragment extends DialogFragment {
.setNegativeButton(R.string.startup_dont_show_again, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
+ @Cleanup ServiceDB.OpenHelper dbHelper = new ServiceDB.OpenHelper(getContext());
Settings settings = new Settings(dbHelper.getWritableDatabase());
settings.putBoolean(HINT_OPENTASKS_NOT_INSTALLED, false);
}
diff --git a/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java
index 71672ea4..72c5ea63 100644
--- a/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java
+++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java
@@ -34,7 +34,6 @@ import java.util.logging.Level;
import at.bitfire.davdroid.AccountSettings;
import at.bitfire.davdroid.App;
import at.bitfire.davdroid.BuildConfig;
-import at.bitfire.davdroid.Constants;
import at.bitfire.davdroid.DavService;
import at.bitfire.davdroid.InvalidAccountException;
import at.bitfire.davdroid.R;
diff --git a/app/src/main/res/menu/activity_account.xml b/app/src/main/res/menu/activity_account.xml
index 2cf4f2cf..9d8ff1b3 100644
--- a/app/src/main/res/menu/activity_account.xml
+++ b/app/src/main/res/menu/activity_account.xml
@@ -13,7 +13,7 @@
<item android:id="@+id/sync_now"
android:icon="@drawable/ic_sync_action"
android:title="@string/account_synchronize_now"
- app:showAsAction="ifRoom"/>
+ app:showAsAction="always"/>
<item android:id="@+id/settings"
android:icon="@drawable/ic_settings_action"
@@ -21,6 +21,7 @@
app:showAsAction="ifRoom"/>
<item android:id="@+id/delete_account"
- android:title="@string/account_delete"/>
+ android:title="@string/account_delete"
+ app:showAsAction="never"/>
</menu> \ No newline at end of file
diff --git a/ical4android b/ical4android
-Subproject f6535874a9f1f399913dcb51bda1aa9affbb4c5
+Subproject 85f4d947089ac3e0b7a61cbedfc69dd6ec7f235
diff --git a/vcard4android b/vcard4android
-Subproject 8c4776a6be83b641611c12e1a0e524b6435bcf9
+Subproject 95a2761006f1c605ee277fa36b0d1aaa083c86b