65 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
1e6fb13ebc register to receive gitlab nightly URLs
They have one more path segment than the others, e.g.:
https://gitlab.com/fdroid/fdroidclient-nightly/raw/master/fdroid/repo
2018-04-11 11:26:55 +02:00
Hans-Christoph Steiner
fbf7e98df9 no need to export WifiStateChangeService to the world 2018-04-06 15:51:00 +02:00
Hans-Christoph Steiner
5bd276c804 make "Only on WiFi" also apply to updates, graphics, and icons
The "Only on WiFi" pref originally only controlled index updates, but now
it makes sense to include all of the various files that are downloaded.

#1381
2018-04-06 15:50:57 +02:00
Hans-Christoph Steiner
c1656f61a7 if device storage is really low, delete the entire cache 2018-04-05 23:28:53 +02:00
Hans-Christoph Steiner
af32e4ac85 trigger CleanCacheService if device storage is low 2018-04-05 23:28:53 +02:00
Hans-Christoph Steiner
0159020c2e whitespace code format changes for AndroidManifest.xml
This moves towards the standard Android Studio Ctrl-Alt-L code format with
only whitespace changes.  This just removes this one kind of space, since
its widespread, and easy to track.  I did this using:

sed -i 's," />,"/>,g' app/src/main/AndroidManifest.xml
2018-02-08 23:47:53 +01:00
Torsten Grote
6067c15085
Implement App Hiding
This commit allows F-Droid to hide itself from the laucher.
It can be hidden either as response to a panic trigger
or as a manual action by long pressing the floating search button.
The latter needs to be explicitly enabled in the settings.

Once hidden, a semi-functional fake calculator app appears in the
launcher that can be used to bring F-Droid back by entering a
pre-defined PIN.
2018-01-27 16:42:59 -02:00
Hans-Christoph Steiner
3938146f93 set up "Android App Links" handling aka "Digital Asset Links"
Add all the new URL path possibilities with the new website to the filter,
and the possible, official host names.  This makes it more likely that
f-droid.org links go straight to F-Droid.

* https://developers.google.com/digital-asset-links/v1/getting-started
* https://developer.android.com/training/app-links/verify-site-associations.html

fdroid-website#165
2018-01-12 13:50:32 +01:00
Torsten Grote
512789aafa
Basic PanicKit Support with one default action
The default action closes F-Droid and removes it from the list of recent
apps.

Destructive action will be added later.
2017-12-06 16:25:01 -02:00
Torsten Grote
4149cf7e8c
Remove dependence on "org.fdroid.fdroid" to make whitelabel clients easier 2017-11-22 13:21:06 -02:00
Christine Emrich
e38d02a59c Add full screen detail view to swipe through screenshots 2017-11-08 13:58:24 +01:00
Peter Serwylo
91a03be6f4 Allow any path when adding fdroidrepo(s):// intents.
When explicitly given an fdroidrepo(s) intent, it seems silly to restrict it based on
a path of /fdroid/repo, because it is plainly obvious it is an F-Droid repo.
Manifest and NewRepoConfig both had to be amended to allow this behaviour.

Fixes #1171.
2017-09-25 15:43:32 +10:00
Chirayu Desai
0d8b0c7fd4 Introduce FileInstaller, a way to handle media files from F-Droid
* This installer is invoked when for non-apk/media files, and
  copies them to an appropriate folder on the sdcard.
* We also introduce a FileInstallerActivity to ask for storage
  permissions at runtime, as needed by Android 6.0 and above,
  and handle the install/uninstall process.
* A toast is shown with the install path after installation.

TODO:
* Manage Installed Apps screen doesn't show media files.
2017-07-07 12:10:48 +05:30
Stephen Michel
876f94e7ca Update repo management screen title 2017-05-15 12:02:02 -04:00
Peter Serwylo
b0803432d8 Ensure PendingIntents use explicit Intents.
The only pending intents that were not explicit were the four from
the NotificationHelper class. These now explicitly specify the
NotificationBroadcastReceiver as their destination, which is not
exported. That then forwards the intents onto relevant methods of
AppUpdateStatusManager.
2017-04-20 17:03:37 +10:00
Hans-Christoph Steiner
1054d57b02 Merge branch 'new-ui--more-fixes' into 'master'
More misc UI fixes, mainly for older devices.

Closes #906 and #866

See merge request !465
2017-04-07 07:47:42 +00:00
Peter Serwylo
655c4bfdd3 Reinstate the About dialog.
Currently available as the first entry in Preferences. Used to be
available in the main action bar menu.

Fixes #906.
2017-04-07 09:55:14 +10:00
Peter Serwylo
5ebe3b2420 Remove references to unused classes in AndroidManifest.xml 2017-04-07 08:30:30 +10:00
Peter Serwylo
60a2ebe9fa Make back behaviour work better for manage repos/installed apps/search. 2017-03-22 08:55:27 +11:00
Peter Serwylo
df5db32451 Check downloaded apks on F-Droid first start.
This will read downloaded .apk files from the disk cache in the background.
For each apk that corresponds to an app which can be updated, the status
manager is notified.
2017-03-22 08:55:26 +11:00
Peter Serwylo
a1a7427cd2 Added "Installed Apps" activity to top of settings.
This is as per the mockup in issue #840, and does the following:

 * Adds a new `PreferencesCategory` of "My Apps" at the top of the
   preferences screen.
 * Adds a "Manage Installed Apps" preference, and moves the
   "Repositories" preference into this category.
 * Repeals an existing change which prevented "updateable" apps from
   appearing in the list of "installed" apps. This is because the two
   lists of apps are no longer displayed alongside eachother.
 * Enhances the `AppListItemController` to also be able to display
   whether or not the currently installed version is the recommended
   version or not.
 * Also adds option to display whether the user has asked to ignore any
   updates for any specific apps.
2017-03-08 10:34:22 +11:00
Peter Serwylo
92943ebdf3 Port intent which handles incoming fdroid repos from NFC.
Moved intent-filter from FDroid to MainActivity. Can test from the
command line with:

```
adb shell am start -a android.nfc.action.NDEF_DISCOVERED \
 -d fdroidrepo://10.0.1.10:8888/fdroid/repo
```
2017-03-08 10:33:32 +11:00
Peter Serwylo
5e6eed9963 Ported 'Add repo' intents from FDroid to MainActivity 2017-03-08 10:33:32 +11:00
Peter Serwylo
3bc97d931b Ported 'View App' and 'Search' intents from FDroid to MainActivity 2017-03-08 10:33:32 +11:00
Peter Serwylo
09af5402e8 Reference MainActivity instead of FDroid where appropriate.
Left old references to FDroid from within classes that are only part
of the old UI. These are to be removed once the new UI is done.
2017-03-08 09:42:32 +11:00
Peter Serwylo
26b9e09f2f Launch AppDetails2 instead of AppDetails in most places. 2017-03-07 18:21:17 +11:00
Peter Serwylo
9bc72ff102 App list: Show a list of apps matching a particular category.
This populates a search box with the category name and shows a
clear button to the right and a back button to the left of the
text input.
2017-03-07 18:21:17 +11:00
Peter Serwylo
b151374a6c Introduce new main activity, currently mostly empty.
This activity so far has a bottom navigation bar with 5 tabs.
The tabs can be changed, but no content is shown.
2017-03-03 13:14:05 +11:00
Chirayu Desai
5e59138082 Remove unused permission org.fdroid.fdroid.privileged.USE_SERVICE
* This was removed by [1] and a whitelist is being used instead
  of this signature protected permission
* Closes #861

[1]: 80452dec24
2017-02-23 22:46:20 +05:30
mvp76
34450569b3 Initial work on details view 2016-11-18 15:39:53 +01:00
Peter Serwylo
8757acca1a Added category provider.
Not used by anything yet.
2016-11-10 08:09:49 +11:00
Hans-Christoph Steiner
8affa08d11 auto-download and -install any associated OBB files
This implements the APK Extension Files spec for finding, downloading, and
installing OBB files that are extension packs for APKs.

This needs WRITE_EXTERNAL_STORAGE since "installing" OBB files is just
copying them to a specific path on the external storage.

https://developer.android.com/google/play/expansion-files.html
2016-10-06 19:12:01 +02:00
Hans-Christoph Steiner
a5e6dad9bf allow apps to request OBB download URLs from F-Droid
By sending an Intent to F-Droid, it will reply with the full download URL
to the OBB file, if one exists for the currently installed version of the
requesting app.
2016-10-06 18:00:25 +02:00
Peter Serwylo
8ed884887a WIP: Making metadata table work. Requires significant refactorings throughout :( 2016-10-06 03:01:07 +11:00
Hans-Christoph Steiner
f102ccff60 allow install history to be read from an ContentProvider
This allows a designated app to read the install history from F-Droid via a
ContentProvider.  The app is designated by the packageName defined in the
string install_history_reader_packageName.
2016-09-29 12:09:50 +02:00
Hans-Christoph Steiner
c02125db01 store install/uninstall history for later use
The install and uninstall history has lots of uses, including displaying
to the user in the app itself, reporting to the Device Administrator to
enable tracking of installs/uninstalls from the admin's app repo, etc.  It
can also be used as part of a "popularity contest" #396
2016-09-29 12:09:50 +02:00
Hans-Christoph Steiner
9848db7680 move CrashReportActivity into new .acra package
This isolates all the ACRA stuff in its own package.
2016-09-28 14:23:34 +02:00
Peter Serwylo
d47967e03d Added new table to store user preferences.
Haven't yet migrated data from the old location in the app table yet.
2016-08-04 09:53:25 +10:00
Daniel Martí
f17482f1eb Bump compile/target sdk versions to 24 2016-07-13 16:08:55 +01:00
Dominik Schürmann
16f97125d7 Provide content Uris via FileProvider
* moves apk verification back inside the Installer class
* uses support libs FileProvider for content Uris
* move apk file caching and storage methods into
ApkCache class
2016-06-20 11:07:06 +02:00
Hans-Christoph Steiner
d734e584f6 InstalledAppProviderService to replace InstalledAppCacheUpdater
InstalledAppCacheUpdater was a custom Service-like thing with some
threading issues.  InstalledAppProviderService is an IntentService that
relies on the built-in queue and threading of the IntentService to make
sure that things are processed nicely in the background and one at a time.

This changes the announcing so that each app added/changed/deleted triggers
a new annoucement.  This keeps the UI more updated, and makes the Installed
tab show something as soon as possible, rather than waiting for the all of
the install apps to be processed.  This becomes more important as more
stuff is added to InstalledAppProvider, like the hash of the APK.

This also strips down and simplifies the related BroadcastReceivers.
BroadcastReceivers work on the UI thread, so they should do as little work
as possible. PackageManagerReceiver just rebadges the incoming Intent and
sends it off to InstalledAppProviderService for processing.
2016-06-02 08:36:30 +02:00
Hans-Christoph Steiner
335be87cf8 new CacheSwapAppsService for caching parsed apps to be swapped
Since it takes a chunk of time to generate and write the app index.jar when
swapping apps, this service starts running in the background immediately
when SwapService starts.  It first indexes the installed apps that were not
cached, then caches apps based PACKAGE_ADDED broadcasts.  It does not index
system apps, since there are many and they are rarely swapped.
2016-06-02 08:36:30 +02:00
Dominik Schürmann
0b92806327 New error dialog on failed installs 2016-05-31 22:44:58 +02:00
Dominik Schürmann
2776b86050 Redesign PrivilegedInstaller
* use new local broadcasts
* show permission screen before download
* display permission screen as dialog
2016-05-31 17:15:07 +02:00
Dominik Schürmann
de1d310499 Move installation of extension into own Installer 2016-05-31 17:14:31 +02:00
Dominik Schürmann
6d2f2d20a8 InstallerService 2016-05-31 17:13:26 +02:00
Daniel Martí
cd1c213fb2 Bump minSdkVersion to 10, remove all compat code
Summary of changes:

* Remove compat apply()
* Remove compat setReadable()
* Remove pre-10 compat code in swap
* Remove pre-10 compat code in PRNGFixes

Fixes #663.
2016-05-30 19:25:06 +01:00
Hans-Christoph Steiner
086ff54b5f move versionCode to app/build.gradle to match versionName
on @mvdan's request
2016-05-20 12:19:17 +02:00
Hans-Christoph Steiner
f7c043b3fc set versionName based on git release tag
This makes it easy to tell which debug build a device is running, since the
versionName now automatically describes the exact commit that was built,
based on `git describe`, e.g.:  0.100-alpha7-33-gc2e8e8a

For release builds, i.e. builds from commits that are tagged as releases,
the versionName will be just the tag name: 0.100-alpha8

closes #664 https://gitlab.com/fdroid/fdroidclient/issues/664
2016-05-20 08:42:28 +02:00
Daniel Martí
9b96282cbf Bump to 0.100-alpha7 2016-05-12 23:12:10 +01:00