5797 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
307abc5706 Merge branch 'finalize-1.6' into 'master'
Finalize 1.6

Closes #1556

See merge request fdroid/fdroidclient!813
2019-04-09 22:16:00 +00:00
Hans-Christoph Steiner
623e27931a Merge branch 'swipe-refresh' into 'master'
Color swipe to refresh indicator

See merge request fdroid/fdroidclient!804
2019-04-09 21:26:32 +00:00
mueller-ma
1c881baa9c Color swipe to refresh indicator 2019-04-09 21:26:32 +00:00
Hans-Christoph Steiner
4f771c4add gitlab-ci: update emulator in Q job to version that works with Q 2019-04-09 23:17:21 +02:00
Hans-Christoph Steiner
d2fea72ed9 always update itself last
When auto-updates are enabled, the app should update itself last, to ensure
that all of the other apps are completely updated before this app is killed
as part of the update process.

closes #1556
2019-04-09 23:17:21 +02:00
Hans-Christoph Steiner
272a0e3f27 fix crash when there is no cache when DeleteCacheService runs
java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration of 'java.io.File' appears in /system/framework/core-oj.jar)
at org.apache.commons.io.FileUtils.isSymlink(FileUtils.java:3107)
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1616)
at org.fdroid.fdroid.DeleteCacheService.onHandleWork(DeleteCacheService.java:30)
at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:391)
at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:382)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
2019-04-09 14:39:45 +02:00
Hans-Christoph Steiner
593ce5284c fix insane NPE
java.lang.NullPointerException: println needs a message
 at android.util.Log.println_native(Native Method)
 at android.util.Log.e(Log.java:232)
 at org.fdroid.fdroid.net.DownloaderService.handleIntent(DownloaderService.java:232)
 at org.fdroid.fdroid.net.DownloaderService.access$000(DownloaderService.java:88)
 at org.fdroid.fdroid.net.DownloaderService$ServiceHandler.handleMessage(DownloaderService.java:108)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:148)
 at android.os.HandlerThread.run(HandlerThread.java:61)
2019-04-09 14:39:45 +02:00
Hans-Christoph Steiner
66e909d606 standardize all Downloaders on 8k block sizes
This is needed since this affects the onProgress broadcasts, and sending
too many can peg the device's CPU.  1k was just too small.  ANd 8k works
fine for Bluetooth.

fdroid/fdroidclient#1590
2019-04-09 14:39:45 +02:00
Hans-Christoph Steiner
06b9abcee3 gitlab-ci: stick with built-in emulator on ARM
The newest emulator releases always segfault when booting the trusty ARM
android-22 image.
2019-04-09 14:39:45 +02:00
Hans-Christoph Steiner
9a8eb5d495 Merge branch 'improve-add-repo-from-clipboard' into 'master'
Improve adding repos from the clipboard

See merge request fdroid/fdroidclient!811
2019-03-29 09:14:44 +00:00
Jonas L
94e441cc9c Improve adding repos from the clipboard
In some cases (e.g. when using Firefox Klar) and copying the URL
(of a link), then only the uri is set and not the text. This
prevented (before this commit) the autofill of the
add package source dialog in such cases.
2019-03-29 09:14:43 +00:00
Hans-Christoph Steiner
ada263feca
gitlab-ci: allow all emulator jobs to fail, they are too flaky 2019-03-29 10:10:25 +01:00
Hans-Christoph Steiner
9ed4fe8c64 Merge branch 'suite-of-crash-fixes' into 'master'
Suite of crash fixes

See merge request fdroid/fdroidclient!810
2019-03-29 06:08:50 +00:00
Hans-Christoph Steiner
934eb06ff1 SwapAppsView: don't crash on update if app is null
java.lang.NullPointerException: Attempt to read from field 'java.lang.String org.fdroid.fdroid.data.App.packageName' on a null object reference
at org.fdroid.fdroid.views.swap.SwapAppsView$AppListAdapter$ViewHolder$2.onChange(SwapAppsView.java:294)
at android.database.ContentObserver.onChange(ContentObserver.java:130)
at android.database.ContentObserver.onChange(ContentObserver.java:145)
at android.database.ContentObserver$NotificationRunnable.run(ContentObserver.java:216)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:152)
at android.app.ActivityThread.main(ActivityThread.java:5497)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
81139c40fa trigger WifiStateChangeService after user accepts location perms
Normally, WifiStateChangeService finds the SSID when F-Droid starts. But if
the user hasn't granted location permissions yet, then WifiStateChangeService
won't have been able to read the SSID yet.
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
43d3653753 create utility method for sending Toasts from Services 2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
0322e87d18 purge debug message that causes NullPointerException
java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File java.io.File.getCanonicalFile()' on a null object reference
at android.os.storage.StorageManager.getStorageVolume(StorageManager.java:844)
at android.os.storage.StorageManager.getStorageVolume(StorageManager.java:838)
at android.os.Environment.isExternalStorageRemovable(Environment.java:725)
at org.fdroid.fdroid.views.main.NearbyViewBinder.<init>(NearbyViewBinder.java:85)
at org.fdroid.fdroid.views.main.MainViewController.bindSwapView(MainViewController.java:64)
at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:94)
at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:47)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6685)
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
d201851784 fix crash when ExternalStorage fails to find something
java.lang.IllegalArgumentException: Failed to find storage device at null
at android.os.Environment.isExternalStorageRemovable(Environment.java:859)
at org.fdroid.fdroid.views.main.NearbyViewBinder.<init>(NearbyViewBinder.java:85)
at org.fdroid.fdroid.views.main.MainViewController.bindSwapView(MainViewController.java:64)
at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:94)
at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:47)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6685)
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
f21e4b5931 fix crashes when parsing bad dates
java.lang.ArrayIndexOutOfBoundsException: length=13; index=42
at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:454)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2340)
at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2740)
at java.util.Calendar.updateTime(Calendar.java:2589)
at java.util.Calendar.getTimeInMillis(Calendar.java:1101)
at java.util.Calendar.getTime(Calendar.java:1074)
at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1518)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1413)
at java.text.DateFormat.parse(DateFormat.java:356)
at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577)
at org.fdroid.fdroid.Utils.parseDate(Utils.java:592)
at org.fdroid.fdroid.data.Apk.<init>(Apk.java:178)


java.lang.NumberFormatException: Not a number:
at android.icu.math.BigDecimal.bad(BigDecimal.java:3349)
at android.icu.math.BigDecimal.<init>(BigDecimal.java:526)
at android.icu.math.BigDecimal.<init>(BigDecimal.java:910)
at android.icu.text.DigitList.getBigDecimalICU(DigitList.java:278)
at android.icu.text.DecimalFormat.parse(DecimalFormat.java:2058)
at android.icu.text.DecimalFormat.parse(DecimalFormat.java:1931)
at java.text.DecimalFormat.parse(DecimalFormat.java:804)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2353)
at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1615)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1528)
at java.text.DateFormat.parse(DateFormat.java:360)
at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577)
at org.fdroid.fdroid.Utils.parseDate(Utils.java:592)
at org.fdroid.fdroid.data.App.<init>(App.java:311)
at org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter.onBindViewHolder(WhatsNewAdapter.java:95)
at org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter.onBindViewHolder(WhatsNewAdapter.java:19)

java.lang.ArrayIndexOutOfBoundsException: length=13; index=36
at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:454)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2411)
at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2813)
at java.util.Calendar.updateTime(Calendar.java:3397)
at java.util.Calendar.getTimeInMillis(Calendar.java:1761)
at java.util.Calendar.getTime(Calendar.java:1734)
at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1633)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1528)
at java.text.DateFormat.parse(DateFormat.java:360)
at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577)
at org.fdroid.fdroid.Utils.parseDate(Utils.java:592)
at org.fdroid.fdroid.data.App.<init>(App.java:314)
at org.fdroid.fdroid.views.updates.UpdatesAdapter.onCanUpdateLoadFinished(UpdatesAdapter.java:241)
at org.fdroid.fdroid.views.updates.UpdatesAdapter.onLoadFinished(UpdatesAdapter.java:224)
at org.fdroid.fdroid.views.updates.UpdatesAdapter.onLoadFinished(UpdatesAdapter.java:67)
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
56ddbf2056 fix crash on bad values in minSdkVersion
java.lang.NumberFormatException: For input string: "@2131034146"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.parseInt(Integer.java:650)
at org.fdroid.fdroid.data.App.getMinTargetMaxSdkVersions(App.java:1092)
at org.fdroid.fdroid.data.App.initInstalledApk(App.java:769)
at org.fdroid.fdroid.data.App.getInstance(App.java:395)
at
org.fdroid.fdroid.localrepo.CacheSwapAppsService.onHandleIntent(CacheSwapAppsService.java:77)
at
android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:76)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
2019-03-29 00:11:16 +01:00
Hans-Christoph Steiner
275a674d26 version code 1006002 1.6-alpha2 2019-03-28 13:30:30 +01:00
Hans-Christoph Steiner
64ff1c472e
update CHANGELOG
[skip ci]
2019-03-28 12:36:29 +01:00
Hans-Christoph Steiner
727e9ed5dd Merge branch 'canonical-url-overhaul' into 'master'
Canonical URL overhaul

Closes #1742, #1736, and #1727

See merge request fdroid/fdroidclient!809
2019-03-28 11:32:46 +00:00
Hans-Christoph Steiner
c7c16131e9 fix OBB support for repositories
The repoId was hard-coded to 0.

fdroid/fdroidclient#1403
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
5f14628524 DownloaderService: improve debug logs for Canonical vs Download URLs 2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
edb2b838eb DownloaderService: track active using the canonical URL
This was using the actual download URL, which might change, depending on
whether a mirror was used.

closes #1727
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
0aab6bc422 standardize on EXTRA_CANONICAL_URL throughout the code base
There were a few different constants used, this unifies them all into one,
so that it is easy to track where it is used, and what it means.
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
3378c0a333 rename Canonical vs. Download URL in InstallManagerService process
AppUpdateStatusManager and InstallManagerService should be using only the
Canonical URL of the package since that is the global unique ID.  The actual
URL used to download it needs to be isolated in DownloaderService, which can
entirely manage the mirror selection process.  This is just a bunch of
renaming to make this all clearer.
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
3a5f96e0b3 DownloaderService: use canonical URL to fix progress updates
The download URL is not the unique ID, the canonical URL is.

closes #1736
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
7f22c3c221 DownloaderService: convert String to Uri to avoid repeated parsing
This parses the String into a Uri once per Intent, rather than once per
broadcast.  The Uri instance is also nicer to work with, since it is the
native URL format for Intents.

It should make the progress updates a bit more efficient also.
fdroid/fdroidclient#1742
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
288577407d move towards only using canonical URLs in InstallManagerService
Only DownloaderService really needs to know about the mirror tricks, the
rest of the process should only ever use the canonical URL to keep things
simple.
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
04298f8886 DownloaderService: only broadcast progress when it actually changes
On a slow download, this could send like 100+ updates even though no more
data had been received.

closes #1742
2019-03-28 11:41:10 +01:00
Hans-Christoph Steiner
d794c5a77c purge urlString from ProgressListener, it is unused and confusing 2019-03-28 11:41:03 +01:00
Hans-Christoph Steiner
6b0a784a26 normalize canonical URL variable names 2019-03-26 21:46:38 +01:00
Hans-Christoph Steiner
e346d2351b rename AppUpdateStatus.getUniqueKey to getCanonicalUrl
This highlights the relationship between the various things that are using
the canonical URL as the unique ID.
2019-03-26 21:46:38 +01:00
Hans-Christoph Steiner
4ea775be00 remove wrong "ERROR" description from Downloader Intend Extras
Looks like a copy-paste bug in a160476a14c40412728f4974f53d1a18f7064346
2019-03-26 21:46:38 +01:00
Hans-Christoph Steiner
a0b318c383 rename Apk.getUrl() to getCanonicalUrl() to highlight it is also an ID
This method returns the URL that points to the canonical download
source for this package.  This is also used as the unique ID for
tracking downloading, progress, and notifications throughout the
whole install process.  It is guaranteed to uniquely represent
this file since it points to a file on the file system of the
canonical webserver.
2019-03-26 21:46:38 +01:00
Hans-Christoph Steiner
19a0428944 Merge branch 'download-updates-by-default' into 'master'
Download updates by default

See merge request fdroid/fdroidclient!806
2019-03-26 20:41:25 +00:00
Hans-Christoph Steiner
80bab5611b Merge branch 'no-featured-app' into 'master'
* no-featured-app:
  cleanup imports
  fix padding of top item in Latest Tab
  Remove feature graphic of first app from "Latest" view

See merge request fdroid/fdroidclient!807
2019-03-26 21:29:33 +01:00
Hans-Christoph Steiner
51431d59ee cleanup imports 2019-03-26 21:29:13 +01:00
Hans-Christoph Steiner
496a3a2938 fix padding of top item in Latest Tab 2019-03-26 21:28:20 +01:00
mueller-ma
59fe365ed6 Remove feature graphic of first app from "Latest" view
Closes #1748
2019-03-26 18:08:38 +01:00
Hans-Christoph Steiner
e3cfe3690d set "Automatically download updates" to default true
But keep "Automatically install updates" default false for devices with
Privileged Extension.
2019-03-26 16:19:07 +01:00
Hans-Christoph Steiner
99591c050c Merge branch 'latest-apps-criteria' into 'master'
Latest apps criteria

See merge request fdroid/fdroidclient!805
2019-03-26 15:17:09 +00:00
Hans-Christoph Steiner
90d4821e99 fix checkstyle LineLength 2019-03-22 22:16:08 +01:00
Hans-Christoph Steiner
4f1855c8a1 App Details: show the app's Translation links
fdroid/fdroidserver!450

icon is:
https://material.io/tools/icons/?search=trans&icon=translate&style=baseline
db-version/82
2019-03-22 22:16:08 +01:00
Hans-Christoph Steiner
3862f941e6 add new criteria for apps shown in Latest tab
This adds requirements before an app is shown on the Latest tab.  It must
have all of these:

* name
* summary
* description
* license
* What's New entry
* at least some text localized

And then it must have at least one of these:

* screenshots
* feature graphic
2019-03-22 22:16:08 +01:00
Hans-Christoph Steiner
dcb1c3accd add flag to track localized apps for selecting in Latest tab db-version/81 2019-03-22 22:16:08 +01:00
Hans-Christoph Steiner
765bd2892d Merge branch 'nearby-view' into 'master'
Improve nearby swap splash layout

See merge request fdroid/fdroidclient!800
2019-03-22 08:46:39 +00:00
Hans-Christoph Steiner
ff111bd6af Merge branch 'improve-error' into 'master'
Mention F-Droid in index file fetch error string

See merge request fdroid/fdroidclient!803
2019-03-21 21:59:28 +00:00