Commit Graph

1468 Commits

Author SHA1 Message Date
Marcus Hoffmann
941d8a0b8b rename app.icon to app.iconFromApk
This makes it clearer what this is actually referring to.
2020-06-24 16:57:28 +02:00
Marcus Hoffmann
a500660a41 allow displaying localized icons
Move the logic of calculating the correct iconUrl from sql to java.

Fixes #1460.
2020-06-24 16:57:28 +02:00
Marcus Hoffmann
4ac2f93238 put archive repo before main
Otherwise when both are enabled the metadata from the archive gets
priority over repo which is not really what we want.
It also breaks a lot of icons, featuregraphics and screenshots.

Fixes fdroid/fdroidclient#1771
Fixes fdroid/fdroidclient#1772
Fixes fdroid/fdroidclient#1686

We also update the default repo priorities for existing installs if we
find the default repos in the original order.

The query is pretty annoying to write in java, here is the raw sql form.

UPDATE fdroid_repo
SET priority = ( SELECT SUM(priority)
            FROM fdroid_repo
            WHERE address IN ('https://f-droid.org/repo', 'https://f-droid.org/archive')
          ) - priority
WHERE address IN ('https://f-droid.org/repo', 'https://f-droid.org/archive') AND
'TRUE' IN (
    SELECT
    CASE
        WHEN a.priority = b.priority-1 THEN 'TRUE'
        ELSE 'FALSE'
    END
    FROM fdroid_repo as a
    INNER JOIN fdroid_repo as b ON
    a.address = "https://f-droid.org/repo" and b.address = "https://f-droid.org/archive"
)
2020-06-24 16:34:43 +02:00
Marcus Hoffmann
82bca90009 UpdateService: fix update scheduling condition
This was blocking updates being scheduled when either data or wifi
updates were disabled. We only want to completely disable the update
service when both are disbaled though.

Ref: #1623
2020-06-15 20:39:56 +02:00
Hans-Christoph Steiner
4031df22f4 Merge branch 'fix_uninstall_crash' into 'master'
fixes a crash that can be triggered when uninstalling with privext

See merge request fdroid/fdroidclient!888
2020-06-10 20:59:16 +00:00
Marcus Hoffmann
3a2ab0baa6 fixes a crash that can be triggered when uninstalling with privext
Fixes the following crash:

05-19 22:39:55.535  1037 24513 W WindowManager: Attempted to add application window with unknown token Token{2f841 null}.  Aborting.
05-19 22:39:55.536 10844 10844 D AndroidRuntime: Shutting down VM
05-19 22:39:55.540 10844 10844 E AndroidRuntime: FATAL EXCEPTION: main
05-19 22:39:55.540 10844 10844 E AndroidRuntime: Process: org.fdroid.fdroid.debug, PID: 10844
05-19 22:39:55.540 10844 10844 E AndroidRuntime: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@d8ae31 is not valid; is your activity running?
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.view.ViewRootImpl.setView(ViewRootImpl.java:891)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:372)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:128)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.app.Dialog.show(Dialog.java:454)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at org.fdroid.fdroid.views.AppDetailsActivity$7.onReceive(AppDetailsActivity.java:607)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:311)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:47)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:120)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:108)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:166)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7529)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
05-19 22:39:55.540 10844 10844 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

The !isFinishing check was already in the installReceiver part, but
somehow missing in uninstallReceiver. There's also a reference to this
here: http://blackriver.to/2012/08/android-annoying-exception-unable-to-add-window-is-your-activity-running/

I don't understand this crash, especially as the dialouge still gets
shown after adding this check (possibly the parent activity is finishing
and then immediately restarting?). But this sems to realibly fix it.

This was happening when I installed an app, used a new settings entry to
unregister privext as a device owner (by calling it via binder/aidl) and
then trying to uninstall the app I just installed again, whithout
closing f-droid inbetween.
2020-05-19 23:43:25 +02:00
Marcus Hoffmann
a965deb51e clean up db when deleting a repository
Previously everything from a repo staying inside the db when removing it
without disabling it first, the problem manifests when the repo is
readded later (or a mirror), as it would get a new id but all apk
entries still point to the original repoid.

So we now first disable a repo (which just calls
RepoProvider.Helper.purgeApps) before deleting it from the db.

closes Bubu/fdroidclassic#29
2020-05-18 23:36:54 +02:00
Marcus
80693c48ff Merge branch 'fix_1845' into 'master'
do not disable update button because of antifeatures

Closes #1845

See merge request fdroid/fdroidclient!872
2020-05-18 18:00:40 +00:00
Isira Seneviratne
983593688c Remove unused API level checks. 2020-05-11 08:20:20 +00:00
Marcus Hoffmann
03600c347c do not disable update button because of antifeatures
This testing at the wrong point, namely in the app details where you are
already looking at the antifeatures which might be present.
In the list view there's an additional direct check with
isDisabledByAntiFeatures() anyway.

Fix fdroid/fdroidclient#1845
2020-02-25 15:47:33 +01:00
Dmitriy Bogdanov
b64b938f78 Fix inactive action buttons 2020-02-13 17:12:34 +04:00
Chirayu Desai
02b613a08e Handle API 29 split-permissions v3
* Re-do the logic completely, and make it much more clearer.
* Also, Read external storage implies access media location
  *ONLY* on apps not targetting API 29 or above, i.e <= 28
2020-02-02 20:15:18 +05:30
Dmitriy Bogdanov
827e2b2e04 Fix displaying default icon for apps without icons 2020-01-23 13:49:48 +04:00
Marcus Hoffmann
90d803dc7b include android 10 in versions display 2020-01-11 00:44:47 +01:00
Hans-Christoph Steiner
3f64fd4930 init suggestedVersionCode to Integer.MIN_VALUE
Java inits ints to 0.  Since it is valid to have a negative Version Code,
versionCodes are inited to Integer.MIN_VALUE;

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

closes #1063
2020-01-10 18:15:42 +01:00
Hans-Christoph Steiner
765f6b840f rename App.upstreamVersionCode to suggestedVersionCode #1063 2020-01-10 18:15:40 +01:00
Hans-Christoph Steiner
10808e2fea rename App.upstreamVersionName to suggestedVersionName #1063 2020-01-10 18:15:39 +01:00
Hans-Christoph Steiner
531494e571 rename App.suggestedVersionName to autoInstallVersionName #1063
# Conflicts:
#	app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java
2020-01-10 18:15:37 +01:00
Hans-Christoph Steiner
cd635459ad rename Cols.SuggestedApk to AutoInstallApk #1063 2020-01-10 18:15:36 +01:00
Hans-Christoph Steiner
cc3d874dc4 rename App.suggestedVersionCode to autoInstallVersionCode #1063 2020-01-10 18:15:34 +01:00
Hans-Christoph Steiner
1c0957ce77 disable annoying or erronous PMD errors 2020-01-10 16:28:03 +01:00
Hans-Christoph Steiner
c987e6ad4c use Collections' isEmpty() to test for emptiness
This should make the code intent clearer and more standard Java.
2020-01-10 16:28:01 +01:00
Hans-Christoph Steiner
c7f3910472 fix PMD "Field has the same name as a method" 2020-01-10 16:28:00 +01:00
Hans-Christoph Steiner
30d16a8862 ManageRepos: force to HTTPS when required by Network Security Config
Since GitLab, GitHub, and Amazon S3 allow some HTTP access while always
providing HTTPS, those should always use HTTPS.  This prevents
2020-01-10 15:28:13 +01:00
Chirayu Desai
fae735c468 Handle API 29 split-permissions v2
* This new permission comes courtesy of the Q December update.
* Read external storage implies access media location

References:
* ac7b10c135%5E%21/#F1
2020-01-10 19:27:53 +05:30
Michael Pöhn
f7c757bf33 app list: open keyboard when X-ing search query 2019-12-29 21:46:29 +01:00
Michael Pöhn
e42718b11f display summary text on app details activity 2019-12-08 03:37:13 +01:00
Chirayu Desai
09835721f2 Handle API 29 split-permissions
* For apps targetting 28 or lower,
  fine/coarse location now implies background location.
* Fine location now implies coarse location.

References:
* https://developer.android.com/about/versions/10/privacy/changes#access_granted_automatically_when_targeting_android_9_or_lower
* https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-10.0.0_r1/data/etc/platform.xml#186
2019-11-14 20:35:50 +05:30
Hans-Christoph Steiner
7c0cb2064e Merge branch 'left-padding' into 'master'
Add left padding on first screenshot to match header

See merge request fdroid/fdroidclient!851
2019-10-30 11:29:07 +00:00
Hans-Christoph Steiner
4312deb4c8 Merge branch 'padding' into 'master'
Fix extra large padding after every five items on main page

See merge request fdroid/fdroidclient!850
2019-10-29 17:27:23 +00:00
dkanada
c9040e2cf4 add left padding on first screenshot to match header 2019-10-29 04:35:25 +09:00
dkanada
d538760ad1 fix extra large padding after every five items on main page 2019-10-29 04:02:37 +09:00
dkanada
6393923274 hide the seekbar value on all devices 2019-10-29 01:51:54 +09:00
Marcus
65463781d0 PrivilegedInstaller: fix a grammar mistake in error message 2019-10-15 11:43:08 +00:00
Hans-Christoph Steiner
ca5996c5b3 detect when USB OTG device is plugged in and show Nearby tab 2019-06-17 18:37:26 +02:00
Hans-Christoph Steiner
23b296a012 add Intent Extra to force Nearby tab to show, like the other tabs have 2019-06-17 18:37:00 +02:00
Hans-Christoph Steiner
525f99b056 implement mirror/repos on USB OTG via Storage Access Framework
* https://developer.android.com/training/articles/scoped-directory-access

One potential future direction, if this proves too limiting:
https://github.com/magnusja/libaums
2019-06-17 18:36:58 +02:00
Hans-Christoph Steiner
842db03d8a fold ".views.hiding" into ".panic", it is only use there 2019-06-17 11:28:52 +02:00
Hans-Christoph Steiner
32aad6b562 move ".net.bluetooth" into ".nearby" package 2019-06-17 11:18:07 +02:00
Hans-Christoph Steiner
15d349f863 move LocalHTTPD and WifiStateChangeService into ".nearby" package 2019-06-17 11:18:07 +02:00
Hans-Christoph Steiner
43c7574228 fold ".views.swap" package into ".nearby" class 2019-06-17 10:50:56 +02:00
Hans-Christoph Steiner
790b5ab27d rename 'localrepo' package to 'nearby' to cover the whole thing 2019-06-17 10:50:56 +02:00
Hans-Christoph Steiner
df3a09dd2b ensure SwapService is running first, after Location perm prompt 2019-06-14 11:25:41 +02:00
Hans-Christoph Steiner
254bd6a4db allow hotspots to work for swapping, even if they don't have internet
It is possible to enable the Hotspot AP on a device, and disable mobile
data.  This setup will work fine for swapping, but the detection logic for
whether there is metered internet was blocking it.  So this adds a new
state to represent and handle this condition.
2019-06-13 21:17:31 +02:00
Hans-Christoph Steiner
bac0ae8f25 show all installed apps as possibilities for panic uninstall
F-Droid should be able to uninstall any app, in theory, not just the apps
that are listed in the index.

This lays some groundwork for moving swap's SelectAppsView to the standard
AppList elements used everywhere else.  It also does a little bit towards
getting rid of InstalledApp in favor of just reusing App.
2019-06-12 14:48:50 +02:00
Hans-Christoph Steiner
89140d5334 InstalledAppProvider: use Android sematics for query methods
Throughout Android, a null projection means return the full record.  This
is well documented.

Also, null sortOrder means use default sort order.
2019-06-12 14:48:50 +02:00
Hans-Christoph Steiner
3b53af0657 panic: add destructive option to reset repos to defaults 2019-06-12 14:48:50 +02:00
Hans-Christoph Steiner
515b5b08f0 set up Panic preference to choose apps to uninstall on trigger 2019-06-12 14:48:50 +02:00
Hans-Christoph Steiner
3812331166 stop crashing if the suggested version ends up being bogus
It is possible for repo operators to specify a bad CurrentVersionCode for
an app that is also in another repo, and cause confusion in the suggested
version calculation.  Or if one repo's index is very out of date.  This
adds a fallback for these cases, so at least it'll stop the crash and
attempt the user's requested install.
2019-06-12 14:48:50 +02:00
Hans-Christoph Steiner
b400df3ac3 remove unused 'projection' argument from ApkProvider.findApkFromAnyRepo()
One small victory in the ever lasting battle against creeping complexity!
2019-06-12 14:48:50 +02:00