Remove disabled apps: 31-60

This commit is contained in:
linsui 2021-03-30 17:08:43 +08:00
parent 3eb6b631c6
commit 3995a322c1
71 changed files with 0 additions and 2593 deletions

View file

@ -1,55 +0,0 @@
Categories:
- Writing
License: MIT
SourceCode: https://github.com/jffrymrtn/writeily
IssueTracker: https://github.com/jffrymrtn/writeily/issues
AutoName: Writeily
Description: |-
'''NOTE:''' This app is no longer maintained.
Lets you take down notes in plain text, or Markdown format. Organize notes by
starring the most important, and preview your work in a rendered Markdown view.
The app blossoms in colour and minimalism. Switch between dark and light themes,
and choose between your favourite Roboto font style.
RepoType: git
Repo: https://github.com/jffrymrtn/writeily
Builds:
- versionName: '1.5'
versionCode: 8
disable: ndk packaging
commit: 89915168a305126dfeb0016244065b91896b6b9f
subdir: writeily
gradle:
- yes
rm:
- writeily/libs/*jar
- writeily/libs/anddown/obj
- writeily/libs/anddown/libs/*jar
- writeily/libs/anddown/libs/armeabi-v7a/*
- writeily/libs/anddown/libs/armeabi/*
- writeily/libs/anddown/libs/x86/*
prebuild:
- sed -i -e '/gson/d' -e '/android-support/d' build.gradle
- sed -i -e '/dependencies/acompile "com.android.support:support-v13:20.0.+"\ncompile
"com.google.code.gson:gson:2.3"' build.gradle
- sed -i -e 's/libs:anddown/:writeily:libs:anddown/g' build.gradle
- pushd libs/anddown/
- ndk-build
- android update lib-project -p .
- ant release
- popd
- versionName: '1.6'
versionCode: 9
disable: as per 1.5
commit: v1.6
MaintainerNotes: '* Tagging is not reliable.'
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: '1.6'
CurrentVersionCode: 9

View file

@ -1 +0,0 @@
Edit plain text and markdown files

View file

@ -1,45 +0,0 @@
Categories:
- Time
License: GPL-3.0-only
WebSite: https://ls.vertretungsplan.me
SourceCode: https://github.com/johan12345/ls-vertretungsplan
IssueTracker: https://github.com/johan12345/ls-vertretungsplan/issues
AutoName: Vertretungsplan
Description: |-
'''NOTE:''' This app is no longer maintained, its repo was archived.
Shows short-term schedule changes and notifies users when there are new changes
concerning their classes at Lornsenschule, Schleswig, Germany.
RepoType: git
Repo: https://github.com/johan12345/ls-vertretungsplan.git
Builds:
- versionName: 2.1.11
versionCode: 18
disable: submodules fail
commit: b97a2be30b1bb504a90178e6638305102d34e959
subdir: Vertretungsplan
submodules: true
srclibs:
- 1:NoAnalytics@v0.3.1
- Google-Gson@gson-2.2.4
- ACRA@acra-4.5.0
extlibs:
- jsoup/jsoup-1.7.2.jar
- android/android-support-v4.jar
prebuild:
- sed -i -e 's@\\\\@/@g' project.properties
- cd libs
- rm acra-*jar gson-*jar jsoup-*jar support-v4-*jar libGoogleAnalytics*jar
- cd ..
- cp -r $$ACRA$$/src/main/java/org src/
- cp -r $$Google-Gson$$/src/main src/main
- cp libs/android-support-v4.jar ../libraries/pagerslidingtabstrip/library/libs/android-support-v4.jar
target: android-19
AutoUpdateMode: None
UpdateCheckMode: Static
CurrentVersion: 2.1.11
CurrentVersionCode: 18

View file

@ -1 +0,0 @@
Schedule changes at Lornsen-Schule

View file

@ -1,43 +0,0 @@
Categories:
- Internet
- Multimedia
License: Apache-2.0
WebSite: https://github.com/Kennyc1012/Opengur/wiki
SourceCode: https://github.com/Kennyc1012/Opengur
IssueTracker: https://github.com/Kennyc1012/Opengur/issues
Changelog: https://github.com/Kennyc1012/Opengur/blob/HEAD/CHANGELOG.MD
AutoName: Opengur
Description: |-
'''Note:''' this app is no longer actively developed.
Browse the Imgur image board. Features support for GIF and GIFV image formats,
tablet mode and album support. Based on material design guidelines for both,
light and dark themes. Includes meme generator and supports Muzei.
'''WARNING''': This app is no longer maintained.
RepoType: git
Repo: https://github.com/Kennyc1012/Opengur/
Builds:
- versionName: 4.7.1
versionCode: 471
disable: android gradle plugin version 2.3.0-rc1 is too old
commit: 4.7.1
subdir: app
gradle:
- f_droid
prebuild:
- sed -i -e '/fabric/d' build.gradle ../build.gradle
- sed -i -e '/com.crashlytics.sdk.android:crashlytics/,+2d' -e '/enableCrashlytics/s/true/false/g'
-e 's/project.API_CLIENT_ID/"null"/g' -e 's/project.API_CLIENT_SECRET/"null"/g'
build.gradle
- sed -i -e 's/${fabric_key}/null/g' src/main/AndroidManifest.xml
AutoUpdateMode: None
UpdateCheckMode: HTTP
UpdateCheckData: https://raw.githubusercontent.com/Kennyc1012/Opengur/HEAD/app/build.gradle|version_code
= (.*)|.|version_name = '(.*)'
CurrentVersion: 4.7.1
CurrentVersionCode: 92

View file

@ -1 +0,0 @@
Browse Imgur

View file

@ -1,32 +0,0 @@
Categories:
- Internet
License: Apache-2.0
AuthorName: Leonardo Cardoso
AuthorEmail: contact@leocardz.com
WebSite: http://android.leocardz.com/url-unshortener
SourceCode: https://github.com/LeonardoCardoso/Unshorten-It
IssueTracker: https://github.com/LeonardoCardoso/Unshorten-It/issues
AutoName: Unshorten It
Description: A simple, beautiful, fast and useful url unshortener with link preview.
RepoType: git
Repo: https://github.com/LeonardoCardoso/Unshorten-It.git
Builds:
- versionName: '2.2'
versionCode: 20
disable: private repo
commit: d77d15d4229ba746f28959dbf5fe73d08b2a43c5
subdir: app
gradle:
- yes
srclibs:
- AndroidLinkPreview@23107d1fbdeaaf8aeac58bddc6edbca4226fdca5
MaintainerNotes: Replace custom maven repo with source-built library.
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '2.2'
CurrentVersionCode: 20

View file

@ -1 +0,0 @@
Get long URLs from shortened ones

View file

@ -1,38 +0,0 @@
Categories:
- Multimedia
License: AGPL-3.0-only
SourceCode: https://github.com/mariogrip/octodroid
IssueTracker: https://github.com/mariogrip/octodroid/issues
AutoName: OctoDroid
Description: |-
This app enables you to track and control your OctoPrint server with your mobile
phone or tablet.
Features:
* Read the overall status of your printer
* Start, Stop and pause prints with your phone
* Receive notification when your print is done
* Read the progress of your current prints
* Connect/Disconnect from printer
* Set the temperature of the heatbed and the hotend
* Control the printhead with your phone
* Watch the webcam to your phone
RepoType: git
Repo: https://github.com/mariogrip/octodroid
Builds:
- versionName: 0.5.2
versionCode: 25
disable: missing drawables - ic_play, ic_stop, ...
commit: 35e89ff27c8a697153296e418adace4cfe0592f1
subdir: app
gradle:
- yes
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 0.5.2
CurrentVersionCode: 25

View file

@ -1 +0,0 @@
Control an OctoPrint 3D printer server

View file

@ -1,37 +0,0 @@
Categories:
- Internet
License: GPL-2.0-only
WebSite: http://www.cipherdyne.org
SourceCode: https://github.com/mrash/fwknop
IssueTracker: https://github.com/mrash/fwknop/issues
AutoName: Firewall Knock Operator
Description: |-
Michael Rash's Perl-based "fwknop" program: firewall knock operator. Implements
an authorization scheme called Single Packet Authorization (SPA). This method of
authorization is based around a default-drop packet filter (fwknop supports
iptables on Linux, ipfw on FreeBSD and Mac OS X, and PF on OpenBSD) and libpcap.
RepoType: git
Repo: https://github.com/mrash/fwknop.git
Builds:
- versionName: '1.0'
versionCode: 2
disable: Doesn't build (native code)
commit: 9e990c9b
subdir: android/project
rm:
- android/project/custom_rules.xml
prebuild:
- cd jni/fwknop
- ./get_libfko_header.sh
target: android-7
buildjni:
- yes
ndk: r12b
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '1.0'
CurrentVersionCode: 2

View file

@ -1 +0,0 @@
Port Knocker

View file

@ -1,25 +0,0 @@
Categories:
- Internet
License: MIT
WebSite: http://twister.net.co
SourceCode: https://github.com/miguelfreitas/twister-webview-app
IssueTracker: https://github.com/miguelfreitas/twister-webview-app/issues
AutoName: twister simpleclient
Description: |-
Twister is a fully decentralized P2P microblogging platform leveraging from the
free software implementations of Bitcoin and BitTorrent protocols.
RepoType: git
Repo: https://github.com/miguelfreitas/twister-webview-app.git
Builds:
- versionName: '1.0'
versionCode: 46
disable: see readme for build instructions
commit: e6ec7da94eeda3d116f062b9843c869131a0730a
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '1.0'
CurrentVersionCode: 46

View file

@ -1 +0,0 @@
Microblogging client for Twister

View file

@ -1,45 +0,0 @@
Categories:
- System
License: Apache-2.0
WebSite: http://androidsu.com/superuser
SourceCode: https://github.com/ChainsDD/Superuser
IssueTracker: https://github.com/ChainsDD/Superuser/issues
AutoName: Superuser
Description: |-
'''This app comes pre-installed on many custom roms. In that case, to upgrade,
you would have to remove the original from /system/app because it is signed with
a different key. We include this in the repo as it is the latest version for
which full source code is available.'''
Any app that requires root access must call the su binary which in turn calls
this app to prompt the user for permission. This app is also used to manage
which apps have root permission as well as monitor their usage of the
permission.
This app assumes you have the su binary installed i.e. have root.
RequiresRoot: 'yes'
RepoType: git
Repo: https://github.com/ChainsDD/Superuser.git
Builds:
- versionName: 3.0.7
versionCode: 41
disable: The latest free version but using with recent su could lead to problems
912db6e5c08713c0
commit: unknown - see disabled
extlibs:
- android/android-support-v4.jar
target: android-11
- versionName: 3.1.3
versionCode: 46
disable: blobs in source
commit: unknown - see disabled
AutoUpdateMode: None
UpdateCheckMode: Static
CurrentVersion: 3.1.3
CurrentVersionCode: 46

View file

@ -1 +0,0 @@
Manage su rights

View file

@ -1,44 +0,0 @@
Categories:
- Security
License: MIT
SourceCode: https://github.com/nowsecure/android-vts
IssueTracker: https://github.com/nowsecure/android-vts/issues
AutoName: VTS for Android
Description: |-
This tool was meant to show the end user the attack surface that a given device
is susceptible to. In implementing these checks we attempt to minimize or
eliminate both false positives/false negatives without negatively affecting
system stability. List of current bug checks:
* ZipBug9950697
* Zip Bug 8219321 / Master keys
* Zip Bug 9695860
* Jar Bug 13678484 / Android FakeID
* CVE 2013-6282 / put/get_user
* CVE_2011_1149 / PSNueter / Ashmem Exploit
* CVE_2014_3153 / Futex bug / Towelroot
* CVE 2014-3847 / WeakSauce * StumpRoot
* Stagefright bugs
* x509 Serialization bug
* PingPong root - CVE-2015-3636
* Stagefright - CVE-2015-6602
* Samsung Remote Code Execution as System
* CVE-2015-6608
RepoType: git
Repo: https://github.com/nowsecure/android-vts.git
Builds:
- versionName: v.13
versionCode: 13
disable: binaries
commit: v.13
subdir: app
gradle:
- yes
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: v.13
CurrentVersionCode: 13

View file

@ -1 +0,0 @@
Check for vulnerabilities

View file

@ -1,33 +0,0 @@
AntiFeatures:
- NonFreeNet
Categories:
- Navigation
License: Apache-2.0
WebSite: http://taxi-bulgaria.com
SourceCode: https://github.com/sytolk/TaxiAndroidOpen
IssueTracker: https://github.com/sytolk/TaxiAndroidOpen/issues
Translation: https://hosted.weblate.org/projects/taxi-android-open/
AutoName: Taxi Bulgaria
Description: |-
Interact with web services provided by taxi companies for internet communication
with taxis: sending a new request, real-time monitoring of status and
positioning of taxis, order history, leave feedback for quality of service and
more.
Currently only available for Burgas, Bulgaria.
RepoType: git
Repo: https://github.com/sytolk/TaxiAndroidOpen
Builds:
- versionName: 1.0.38
versionCode: 38
disable: non-free deps (play-services)
commit: fb08b69e7f0655f53406405b77ea78ef56d089ca
maven: 'yes'
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 1.0.47
CurrentVersionCode: 47

View file

@ -1 +0,0 @@
Taxi information and odering in Bulgaria

View file

@ -1,30 +0,0 @@
Categories:
- Games
License: GPL-2.0-only
WebSite: http://ri-li.sourceforge.net
SourceCode: https://github.com/dennis-sheil/commandergenius/tree/toytrain
Description: A train game.
RepoType: git
Repo: https://github.com/dennis-sheil/commandergenius
Builds:
- versionName: '1.0'
versionCode: 1
disable: Doesn't work with these binaries removed
commit: 5ddf818e
subdir: project
init:
- rm -rf jni/android/libandroid.so jni/ffmpeg/lib/armeabi* jni/python/libpython.so
- cd ..
- ./ChangeAppSettings.sh -a
target: android-12
buildjni:
- yes
ndk: r12b
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: '1.0'
CurrentVersionCode: 1

View file

@ -1,29 +0,0 @@
AntiFeatures:
- NonFreeDep
Categories:
- Multimedia
License: Apache-2.0
WebSite: http://forum.xda-developers.com/showthread.php?t=2653171
SourceCode: https://github.com/TrentPierce/DontPause
IssueTracker: https://github.com/TrentPierce/DontPause/issues
AutoName: Dont Pause!
Description: |-
Silences notifications while media is playing so they don't interrupt you.
Antifeature: Upstream uses non-free GooglePlayServices which have been stripped
from this build.
RepoType: git
Repo: https://github.com/TrentPierce/DontPause
Builds:
- versionName: '3.54'
versionCode: 39
disable: PayPalSDK, google play services
commit: 2d8b8004e95b282d4a2
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '3.54'
CurrentVersionCode: 39

View file

@ -1 +0,0 @@
Silence notifications while media is playing

View file

@ -1,48 +0,0 @@
Categories:
- Reading
License: GPL-3.0-only
WebSite: http://android.quran.com/
SourceCode: https://github.com/quran/quran_android
IssueTracker: https://github.com/quran/quran_android/issues
AutoName: Quran
Description: |-
A simple (madani based) qu'ran app for android. You are prompted to download the
data at startup.
Translation, tafsir and Arabic data come from <a href="http://tanzil.net">tanzil</a> and
King Saud University. Audio from Every Ayah. Images from
<a href="https://github.com/quran/quran.com-images">quran images project</a>.
RepoType: git
Repo: https://github.com/ahmedre/quran_android.git
Builds:
- versionName: 2.3.1
versionCode: 231
disable: custom licence v2.3.1
commit: unknown - see disabled
subdir: app
srclibs:
- ActionBarSherlock@4.1.0
prebuild: echo "android.library.reference.1=$$ActionBarSherlock$$" >> project.properties
target: android-17
- versionName: 2.7.2
versionCode: 272
disable: crashlytics
commit: v2.7.2
subdir: app
gradle:
- yes
prebuild:
- sed -i -e '/fabric/d' -e '/com.crashlytics.sdk.android:crashlytics/,+2d' -e
'/com.android.tools.build:gradle/s/2.2.0-rc1/2.2.2/' build.gradle ../build.gradle
- find . -type f -name '*java' -exec sed -i -e '/Crashlytics.*;$/d' -e '/Fabric/d'
-e '/com.crashlytics.android.answers/d' {} \;
- pushd src/main/java/com/quran/labs/androidquran/
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: 3.0.4
CurrentVersionCode: 3041

View file

@ -1 +0,0 @@
Read the Quran

View file

@ -1,41 +0,0 @@
Disabled: non-free, little chance we'll ever build it
Categories:
- Internet
License: GPL-3.0-or-later
WebSite: http://www.ratebeer.com
SourceCode: https://github.com/erickok/ratebeer
IssueTracker: https://github.com/erickok/ratebeer/issues
AutoName: RateBeer
Summary: RateBeer.com client
Description: |-
Companion client for the <a href="http://www.ratebeer.com">RateBeer</a>-Website.
Features:
* Search and explore (top) beers without the need for an account
* On- and off-line rating of beers
* Offer place and event suggestions based on a user's geographical location
RepoType: git
Repo: https://github.com/erickok/ratebeer
Builds:
- versionName: 1.5.8
versionCode: 52
disable: filled with jars, uses google play services lib
commit: none
subdir: RateBeerForAndroid
- versionName: 2.2.1
versionCode: 213
disable: play-services
commit: v2.2.1
subdir: app
gradle:
- yes
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 2.2.1
CurrentVersionCode: 213

View file

@ -1,33 +0,0 @@
Categories:
- Multimedia
- Internet
License: GPL-3.0-or-later
WebSite: https://mediagoblin.org
SourceCode: https://notabug.org/SapienTech/MediaGoblinApp
IssueTracker: https://notabug.org/SapienTech/MediaGoblinApp/issues
Description: |-
Enjoy all the features of MediaGoblin, now on your phone.
* Post images
* View images
* Comment on posts
RepoType: git
Repo: https://notabug.org/SapienTech/Goblinoid
Builds:
- versionName: 0.1.3
versionCode: 103
disable: prebuildozer tries to modify the system
commit: 0.1.3
submodules: true
output: bin/MediaGoblin-0.1.3-release-unsigned.apk
build:
- ./prebuildozer.sh
- buildozer android release
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: 0.1.3
CurrentVersionCode: 103

View file

@ -1 +0,0 @@
MediaGoblin Client

View file

@ -1,25 +0,0 @@
Disabled: Repo vanished
Categories:
- Games
License: MIT
SourceCode: https://github.com/Semche/Invasion-Android
IssueTracker: https://github.com/Semche/Invasion-Android/issues
AutoName: Invasion
Summary: Shoot'em Up game in space
Description: |-
You're a space ship, just kill those damn aliens! Touch the right part of the
screen to shoot.
Builds:
- versionName: '1.0'
versionCode: 1
disable: unknown jar andengine.jar
commit: 51d7251f1629d2b7263abe4bb37906c11490eed4
MaintainerNotes: Repo has been removed.
AutoUpdateMode: None
UpdateCheckMode: None
NoSourceSince: '1.1'

View file

@ -1,28 +0,0 @@
Categories:
- Multimedia
License: Apache-2.0
WebSite: https://circleofmusic-sidzi.rhcloud.com/
SourceCode: https://github.com/Circle-Of-Music-Makers/com-android
IssueTracker: https://github.com/Circle-Of-Music-Makers/com-android/issues
AutoName: Circle of Music
Description: |-
Listen to music and tell others what you are listening to. Set iconic alarms to
wake up.
RepoType: git
Repo: https://github.com/Circle-Of-Music-Makers/com-android
Builds:
- versionName: '1'
versionCode: 1
disable: 'build issues, no license '
commit: 4a68ba9
subdir: app
gradle:
- yes
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: '1'
CurrentVersionCode: 1

View file

@ -1 +0,0 @@
Listen and favorite music

View file

@ -1,27 +0,0 @@
Categories:
- Internet
License: GPL-3.0-or-later
WebSite: http://rivers.silverkeytech.com
SourceCode: https://github.com/dodyg/AndroidRivers
IssueTracker: https://github.com/dodyg/AndroidRivers/issues
AutoName: Android Rivers
Description: |-
Feed reader which not only supports RSS, ATOM and OPML, but can also read
pocasts and the RiverJS format. It supports Google News, Kayak.com and
Craiglist, as well.
RepoType: git
Repo: https://github.com/dodyg/AndroidRivers.git
Builds:
- versionName: '1.15'
versionCode: 10
disable: jars
commit: fdfa3a34568a25f26438222df07de7023c9a5499
submodules: true
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '1.15'
CurrentVersionCode: 10

View file

@ -1 +0,0 @@
Feed reader

View file

@ -1,24 +0,0 @@
Categories:
- Science & Education
License: AGPL-3.0-only
SourceCode: https://github.com/sli/juicy-mobile
IssueTracker: https://github.com/sli/juicy-mobile/issues
AutoName: Juicy
Description: |-
A small suite of tools for vapers (electronic cigarette users) for calculating
liquid recipes, total resistance, and power output, with included safety
features such as warning the user when theyre in dangerous territory.
Builds:
- versionName: 0.2.1
versionCode: 1
disable: srclibs todo
commit: 0.1.1a
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: '0.1'
CurrentVersionCode: 1
NoSourceSince: 0.2.1

View file

@ -1 +0,0 @@
Calculator for electric cigarettes

View file

@ -1,29 +0,0 @@
Categories:
- Graphics
License: MIT
SourceCode: https://github.com/snaheth/TrulyRandom
AutoName: Truly Random
Description: |-
Use a random number generator at Australia National University's Quantum Numbers
lab to generate random gradients.
If you are not connected to the internet, the generated numbers and gradients
will still be random, but not as random as the numbers you could get by being
connected to the internet.
Builds:
- versionName: '1.01'
versionCode: 2
disable: package id mismatch, R errors
commit: 333dd8d0e74ba2f0b6ae7d669c49c48bcc439af2
subdir: app
gradle:
- yes
MaintainerNotes: Github repo deleted.
AutoUpdateMode: None
UpdateCheckMode: None
NoSourceSince: '1.02'

View file

@ -1 +0,0 @@
Generate random gradients

View file

@ -1,37 +0,0 @@
AntiFeatures:
- NonFreeNet
- Tracking
Categories:
- Internet
License: GPL-3.0-only
WebSite: http://sunshineapps.com.ua/
SourceCode: https://github.com/sfilmak/MakiLite
IssueTracker: https://github.com/sfilmak/MakiLite/issues
Changelog: https://github.com/sfilmak/MakiLite/blob/HEAD/README.md
AutoName: Maki Lite
Description: Fast and light Facebook wrapper with colorful themes & powerful customization.
RepoType: git
Repo: https://github.com/sfilmak/MakiLite
Builds:
- versionName: 1.2.8
versionCode: 11
disable: java issue
commit: 351d3d98b0ebf8b9ffb11faf8a1220f78a59fcca
subdir: app
gradle:
- yes
prebuild:
- sed -i -e 's@https://github.com/omadahealth/omada-nexus/raw/master/release@https://jitpack.io@g'
../build.gradle
- sed -i -e '/uk.me.lewisdeane/a*/\ncompile "com.github.lewisjdeane:L-Dialogs:8c1419e7c6"'
-e '/uk.me.lewisdeane/i/*' -e '/rippleeffect/i/*' -e '/rippleeffect/a*/compile
"com.github.OrangeGangsters:RippleEffect:custom_listener-SNAPSHOT"' build.gradle
- sed -i -e '/<!-- ATTENTION:/,+4d' src/main/AndroidManifest.xml
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: 1.2.5
CurrentVersionCode: 8

View file

@ -1 +0,0 @@
Connect to Facebook

View file

@ -1,49 +0,0 @@
AntiFeatures:
- UpstreamNonFree
Categories:
- Reading
License: AGPL-3.0-only
WebSite: https://github.com/helsinki-city-library/pocketlibrary/wiki
SourceCode: https://github.com/helsinki-city-library/pocketlibrary
IssueTracker: https://github.com/helsinki-city-library/pocketlibrary/issues
AutoName: Pocket Library
Description: |-
Pocket Library is a new kind of a service for library patrons.
The service expands the traditional notion of checking out materials, making it
possible for library users to check out books and other items directly from
other users anywhere.
To be more generally useful as a library users personal information assistant,
it also has the ability to manage the users loans and explore the library
catalog.
The service is currently tailored for Helsinki area public libraries catalog,
but can be easily adapted for anybody using MARC21 catalogs.
A proprietary analytics library was removed.
RepoType: git
Repo: https://github.com/helsinki-city-library/pocketlibrary.git
Builds:
- versionName: '1.5'
versionCode: 18
disable: purge apk; assets need to be included from common somehow
commit: ad935f
subdir: android
init:
- rm LibraryProject/build.xml
- echo -e "android.library=true\ntarget=android-12" > LibraryProject/project.properties
srclibs:
- NoAnalytics@c8d77
rm:
- android/libs/libGoogleAnalyticsV2.jar
- iphone
prebuild: $$SDK$$/tools/android update project -l $$NoAnalytics$$ -p .
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '1.5'
CurrentVersionCode: 18

View file

@ -1 +0,0 @@
Assistance for library users

View file

@ -1,36 +0,0 @@
Categories:
- Phone & SMS
License: Apache-2.0
WebSite: http://www.tbray.org/ongoing/When/201x/2010/04/25/LifeSaver-Lessons
SourceCode: https://code.google.com/p/lifesaver/source
AutoName: LifeSaver2
Description: |-
A simple way to transfer your SMS and call logs to another phone via the sdcard.
We don't have version 2.0 which can transfer the data via a Google App Engine
server as it would require tokens that aren't in the source code and the source
code for the server isn't free anyway.
RepoType: git-svn
Repo: https://lifesaver.googlecode.com/svn/trunk
Builds:
- versionName: '1.0'
versionCode: 3
disable: still waiting for bin to be purged
prebuild: rm -rf src/com/textuality/lifesaver
target: android-10
- versionName: '2.2'
versionCode: 6
disable: 'completely broken app: see description'
commit: '27'
srclibs:
- Aerc@064c6f23aa09
prebuild: echo 'android.library.reference.1=$$Aerc$$' >> project.properties
target: android-10
AutoUpdateMode: None
UpdateCheckMode: Static
CurrentVersion: '1.0'
CurrentVersionCode: 3

View file

@ -1 +0,0 @@
SMS and call log backup/restore

View file

@ -1,31 +0,0 @@
Categories:
- Internet
License: Apache-2.0
SourceCode: https://github.com/tjoelsson/graphitoid
IssueTracker: https://github.com/tjoelsson/graphitoid/issues
AutoName: Graphitoid
Description: |-
A front end for <a href="http://graphite.wikidot.com/">Graphite</a>, a realtime graphing
server. Displays graphs and allows metrics filtering.
RepoType: git
Repo: https://github.com/tjoelsson/graphitoid.git
Builds:
- versionName: 2.1.2
versionCode: 6
disable: No resource identifier found for attribute 'indicator_gravity'
commit: a9683ec7f6c
srclibs:
- Tree-View-List@e3ff02613a2a
- DateSlider@14
prebuild:
- echo "android.library.reference.1=$$Tree-View-List$$" >> project.properties
- echo "android.library.reference.2=$$DateSlider$$" >> project.properties
target: android-15
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 2.1.2
CurrentVersionCode: 6

View file

@ -1 +0,0 @@
Front end for Graphite

View file

@ -1,163 +0,0 @@
AntiFeatures:
- NonFreeDep
Categories:
- Security
License: GPL-3.0-only
WebSite: https://www.surespot.me/
SourceCode: https://github.com/zoff99/surespot-android
IssueTracker: https://github.com/zoff99/surespot-android/issues
Name: Surespot
AutoName: surespot
Description: |-
Use surespot and everything you send can only be read by the person you sent it
to. Period. Everything sent using surespot is end-to-end encrypted with
symmetric-key encryption (256 bit AES-GCM) using keys created with 521 bit ECDH
shared secret derivation, but you wont notice because security in surespot is
built-in, not a layer over something else. Be confident sending private
information and pictures, you have control over your messages, when you delete a
sent message it will be removed from the receiver's phone and images are not
shareable unless you make them so. Multiple identities allow you to be who you
want with just who you want, and if anyone gets annoying you can block them.
Surespot does not require or store your phone number or email address and we
don't mine your data, no advertisements here!
'''WARNING'''
This build recipe is complex and error-prone. Use it only at your own risk.
RepoType: git
Repo: https://github.com/zoff99/surespot-android.git
Builds:
- versionName: 61-fdroid
versionCode: 61
disable: builds, but includes jars
commit: 4b9219e86c62208ebe1ca0cf48afa0cf15c34251
subdir: surespot
gradle:
- yes
forceversion: true
prebuild:
- rm 'src/main/res/raw/ffmpegpie'
- rm 'src/main/res/raw/ffmpeg'
- touch 'src/main/res/raw/ffmpegpie'
- touch 'src/main/res/raw/ffmpeg'
- sed -i -e 's#com.google.android.gms:play-services-drive:7.5.0#com.android.support:support-v4:22.2.0#'
build.gradle
- mkdir -p ../surespotcommon/src/main/res/raw
- sed -i -e 's#Build.VERSION_CODES.M#23#' src/main/java/com/twofours/surespot/identity/IdentityController.java
- printf 'ssl_strict=true\nbaseUrl=https://server.surespot.me:443\n' > ../surespotcommon/src/main/res/raw/configuration.properties
- sed -i -e 's#import java.util.Properties;#import java.util.Properties;\nimport
com.twofours.surespot.common.R;\n#g' ../surespotcommon/src/main/java/com/twofours/surespot/common/SurespotConfiguration.java
- pushd src/main/java/com/twofours/surespot/backup/
- sed -i -e '/import com.google.android.gms/d' -e 's#GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE#"dummy"#'
-e '/AccountPicker.newChooseAccountIntent/d' ImportIdentityActivity.java ExportIdentityActivity.java
- cat ImportIdentityActivity.java | grep -v '\snull);' > ImportIdentityActivity.java_
- mv ImportIdentityActivity.java_ ImportIdentityActivity.java
- sed -i -e 's#ActivityNotFoundException e#Exception e#' ExportIdentityActivity.java
ImportIdentityActivity.java
- sed -i -e 's#startActivityForResult(accountPickerIntent, SurespotConstants.IntentRequestCodes.CHOOSE_GOOGLE_ACCOUNT);#System.out.println("dummy");#'
ExportIdentityActivity.java ImportIdentityActivity.java
- popd
- sed -i -e 's#android {#android {\nlintOptions {\nabortOnError false\n}\n#'
build.gradle
- versionName: 63-fdroid
versionCode: 63
disable: remove apk
commit: aa83369736b7533cb8ab824ee36be032b40271bf
subdir: surespot
patch:
- Ex-63.patch
- Im-63.patch
gradle:
- yes
srclibs:
- gcm@7f647288103bac2c5552af881f0e217c5b95d78a
rm:
- .google_apis/._.DS_Store
- ._.DS_Store
- surespot/libs/*
- surespot/src/main/res/raw/ffmpegpie
- surespot/src/main/res/raw/ffmpeg
- surespotcommon/libs/*.jar
prebuild:
- pwd
- touch src/main/res/raw/ffmpegpie src/main/res/raw/ffmpeg
- sed -i -e 's#com.google.android.gms:play-services-drive:7.8.0#com.android.support:support-v4:19.0.1#'
build.gradle
- mkdir -p ../surespotcommon/src/main/res/raw
- sed -i -e 's#Build.VERSION_CODES.M#23#' src/main/java/com/twofours/surespot/identity/IdentityController.java
- printf 'ssl_strict=true\nbaseUrl=https://server.surespot.me:443\n' > ../surespotcommon/src/main/res/raw/configuration.properties
- sed -i -e 's#import java.util.Properties;#import java.util.Properties;\nimport
com.twofours.surespot.common.R;\n#g' ../surespotcommon/src/main/java/com/twofours/surespot/common/SurespotConfiguration.java
- sed -i -e 's#@integer/google_play_services_version#4030500#' src/main/AndroidManifest.xml
- awk 'NR<=21||NR>=62' proguard-project.txt > proguard-project.txt_
- mv proguard-project.txt_ proguard-project.txt
- sed -i -e 's#import org.acra.ACRA;##' ../androidasynchttp/src/main/java/com/loopj/android/http/AsyncHttpRequest.java
src/main/java/com/twofours/surespot/SurespotApplication.java
- sed -i -e 's#import org.acra.ReportingInteractionMode;##' -e 's#import org.acra.annotation.ReportsCrashes;##'
-e 's#ACRA.init(this);##' -e 's#@ReportsCrashes#// @ReportsCrashes#' -e 's#formUri
= "ht#// formUri = "ht#' src/main/java/com/twofours/surespot/SurespotApplication.java
- sed -i -e 's#compile files(.libs/gcm.jar.)##' -e 's#compile files(.*libs.*)##'
-e 's#android {#android {\nlintOptions {\nabortOnError false\n}\n#' build.gradle
- sed -i -e 's#javaMaxHeapSize .*##' build.gradle
- rm src/main/java/com/twofours/surespot/backup/DriveHelper.java
- cp -av $$gcm$$/gcm-client-deprecated/src/com src/main/java/
- pushd ../
- find .google_apis -name '*.jar' -exec rm {} \;
- popd
- sed -i -e '/support-v4/acompile "com.madgag:scprov-jdk15on:1.47.0.3"\ncompile
"com.madgag:sc-light-jdk15on:1.47.0.3"' -e '/compile files/d' build.gradle
- sed -i -e '/surespotcommon/acompile "com.madgag:scprov-jdk15on:1.47.0.3"\ncompile
"com.madgag:sc-light-jdk15on:1.47.0.3"' -e '/compile files/d' ../androidkeystore/build.gradle
novcheck: true
- versionName: 64-mod
versionCode: 64
disable: GCM
commit: b6889acbbf451dcb7421540511b62fc9375b6215
subdir: surespot
gradle:
- yes
prebuild:
- git clone https://github.com/zoff99/gcm-client-old.git
- mkdir -p src/main/java/com/
- cp -av gcm-client-old/com src/main/java/
- mkdir -p ../surespotcommon/src/main/res/raw
- printf 'ssl_strict=true\nbaseUrl=https://server.surespot.me:443\n' > ../surespotcommon/src/main/res/raw/configuration.properties
- pushd ../
- find .google_apis -name '*.jar' -exec rm {} \;
scanignore:
- surespot/src/main/res/raw/ffmpeg
- versionName: 65-mod
versionCode: 65
disable: GCM
commit: fdfd9f08734705d60955694a877f575693f8a960
subdir: surespot
gradle:
- yes
prebuild:
- git clone https://github.com/zoff99/gcm-client-old.git
- mkdir -p src/main/java/com/
- cp -av gcm-client-old/com src/main/java/
- mkdir -p ../surespotcommon/src/main/res/raw
- printf 'ssl_strict=true\nbaseUrl=https://server.surespot.me:443\n' > ../surespotcommon/src/main/res/raw/configuration.properties
- pushd ../
- find .google_apis -name '*.jar' -exec rm {} \;
scanignore:
- surespot/src/main/res/raw/ffmpeg
MaintainerNotes: |-
* Voice function removed
Why on earth do we need to git clone? This build is begging to break
itself.
ArchivePolicy: 0 versions
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: 65-mod
CurrentVersionCode: 65

View file

@ -1,525 +0,0 @@
diff --git a/surespot/src/main/java/com/twofours/surespot/backup/ExportIdentityActivity.java b/tmp/E3.java
index 99ec8f1..70d59bc 100644
--- a/surespot/src/main/java/com/twofours/surespot/backup/ExportIdentityActivity.java
+++ b/tmp/E3.java
@@ -41,15 +41,15 @@ import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-import com.google.android.gms.auth.GoogleAuthUtil;
-import com.google.android.gms.common.AccountPicker;
-import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
-import com.google.api.client.http.ByteArrayContent;
-import com.google.api.services.drive.Drive;
-import com.google.api.services.drive.model.ChildList;
-import com.google.api.services.drive.model.ChildReference;
-import com.google.api.services.drive.model.FileList;
-import com.google.api.services.drive.model.ParentReference;
+
+
+
+
+
+
+
+
+
import com.twofours.surespot.R;
import com.twofours.surespot.common.FileUtils;
import com.twofours.surespot.common.SurespotConstants;
@@ -64,11 +64,11 @@ import com.twofours.surespot.ui.UIUtils;
public class ExportIdentityActivity extends SherlockActivity {
private static final String TAG = "ExportIdentityActivity";
private List<String> mIdentityNames;
- private DriveHelper mDriveHelper;
+
private Spinner mSpinner;
private TextView mAccountNameDisplay;
- public static final String[] ACCOUNT_TYPE = new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE};
+ public static final String[] ACCOUNT_TYPE = new String[]{"dummy"};
private SingleProgressDialog mSpd;
private SingleProgressDialog mSpdBackupDir;
private AlertDialog mDialog;
@@ -79,439 +79,41 @@ public class ExportIdentityActivity extends SherlockActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_export_identity);
- Utils.configureActionBar(this, getString(R.string.identity), getString(R.string.backup), true);
- final String identityDir = FileUtils.getIdentityExportDir().toString();
-
- TextView tvBackupWarning = (TextView) findViewById(R.id.backupIdentitiesWarning);
- Spannable s1 = new SpannableString(getString(R.string.help_backupIdentities1));
- s1.setSpan(new ForegroundColorSpan(Color.RED), 0, s1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- tvBackupWarning.setText(s1);
-
- final TextView tvPath = (TextView) findViewById(R.id.backupLocalLocation);
- mSpinner = (Spinner) findViewById(R.id.identitySpinner);
-
- final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.sherlock_spinner_item);
- adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
- mIdentityNames = IdentityController.getIdentityNames(this);
-
- for (String name : mIdentityNames) {
- adapter.add(name);
- }
-
- mSpinner.setAdapter(adapter);
-
- String backupUsername = getIntent().getStringExtra("backupUsername");
- getIntent().removeExtra("backupUsername");
-
- mSpinner.setSelection(adapter.getPosition(backupUsername == null ? IdentityController.getLoggedInUser() : backupUsername));
- mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-
- String identityFile = identityDir + File.separator + IdentityController.caseInsensitivize(adapter.getItem(position))
- + IdentityController.IDENTITY_EXTENSION;
- tvPath.setText(identityFile);
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
-
- }
-
- });
-
- Button exportToSdCardButton = (Button) findViewById(R.id.bExportSd);
-
- exportToSdCardButton.setEnabled(FileUtils.isExternalStorageMounted());
-
- exportToSdCardButton.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO progress
- final String user = (String) mSpinner.getSelectedItem();
- mDialog = UIUtils.passwordDialog(ExportIdentityActivity.this, getString(R.string.backup_identity, user),
- getString(R.string.enter_password_for, user), new IAsyncCallback<String>() {
- @Override
- public void handleResponse(String result) {
- if (!TextUtils.isEmpty(result)) {
- exportIdentity(user, result);
- }
- else {
- Utils.makeToast(ExportIdentityActivity.this, getString(R.string.no_identity_exported));
- }
- }
- });
-
- }
- });
-
- mDriveHelper = new DriveHelper(getApplicationContext(), true);
- Button exportToGoogleDriveButton = (Button) findViewById(R.id.bBackupDrive);
-
- exportToGoogleDriveButton.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- if (mDriveHelper.getDriveAccount() != null) {
- if (mDriveHelper.getDriveService() != null) {
- backupIdentityDrive(true);
- }
- }
- else {
- chooseAccount(false);
- }
- }
- });
-
- mAccountNameDisplay = (TextView) findViewById(R.id.exportDriveAccount);
- String account = getSharedPreferences(IdentityController.getLoggedInUser(), Context.MODE_PRIVATE).getString("pref_google_drive_account",
- getString(R.string.no_google_account_selected));
- mAccountNameDisplay.setText(account);
-
- Button chooseAccountButton = (Button) findViewById(R.id.bSelectDriveAccount);
- chooseAccountButton.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
- chooseAccount(true);
- }
- });
}
// //////// Local
private void exportIdentity(String user, String password) {
- IdentityController.exportIdentity(ExportIdentityActivity.this, user, password, new IAsyncCallback<String>() {
- @Override
- public void handleResponse(String response) {
- if (response == null) {
- Utils.makeToast(ExportIdentityActivity.this, getString(R.string.no_identity_exported));
- }
- else {
- Utils.makeLongToast(ExportIdentityActivity.this, response);
- }
-
- }
- });
}
// //////// DRIVE
private void chooseAccount(boolean ask) {
- Intent accountPickerIntent = AccountPicker.newChooseAccountIntent(null, null, ACCOUNT_TYPE, ask, null, null, null, null);
-
- try {
- startActivityForResult(accountPickerIntent, SurespotConstants.IntentRequestCodes.CHOOSE_GOOGLE_ACCOUNT);
- }
- catch (ActivityNotFoundException e) {
- Utils.makeToast(ExportIdentityActivity.this, getString(R.string.device_does_not_support_google_drive));
- SurespotLog.i(TAG, e, "chooseAccount");
- }
-
}
private void removeAccount() {
- SharedPreferences.Editor editor = getSharedPreferences(IdentityController.getLoggedInUser(), Context.MODE_PRIVATE).edit();
- editor.remove("pref_google_drive_account");
- editor.commit();
-
- mAccountNameDisplay.setText(R.string.no_google_account_selected);
-
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case SurespotConstants.IntentRequestCodes.CHOOSE_GOOGLE_ACCOUNT:
- if (data != null) {
-
- SurespotLog.w("Preferences", "SELECTED ACCOUNT WITH EXTRA: %s", data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME));
- Bundle b = data.getExtras();
-
- String accountName = b.getString(AccountManager.KEY_ACCOUNT_NAME);
-
- SurespotLog.d("Preferences", "Selected account: " + accountName);
- if (accountName != null && accountName.length() > 0) {
-
- mDriveHelper.setDriveAccount(accountName);
- mAccountNameDisplay.setText(accountName);
- backupIdentityDrive(true);
- }
- }
- break;
-
- case SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH:
- if (resultCode == Activity.RESULT_OK) {
- Drive drive = mDriveHelper.getDriveService();
- if (drive != null) {
- backupIdentityDrive(false);
-
- }
- }
- else {
-
- }
- }
}
private void backupIdentityDrive(final boolean firstAttempt) {
- if (mSpdBackupDir == null) {
- mSpdBackupDir = new SingleProgressDialog(this, getString(R.string.progress_drive_dir_check), 1000);
- }
- mSpdBackupDir.show();
- new AsyncTask<Void, Void, String>() {
-
- @Override
- protected String doInBackground(Void... params) {
-
- return ensureDriveIdentityDirectory();
-
- }
-
- protected void onPostExecute(final String identityDirId) {
- mSpdBackupDir.hide();
- if (identityDirId == null) {
- if (!firstAttempt) {
- Utils.makeToast(ExportIdentityActivity.this, getString(R.string.could_not_backup_identity_to_google_drive));
- }
- return;
- }
-
- SurespotLog.d(TAG, "identity file id: %s", identityDirId);
- final String user = (String) mSpinner.getSelectedItem();
- mDialog = UIUtils.passwordDialog(ExportIdentityActivity.this, getString(R.string.backup_identity, user),
- getString(R.string.enter_password_for, user), new IAsyncCallback<String>() {
- @Override
- public void handleResponse(final String password) {
- if (!TextUtils.isEmpty(password)) {
- if (mSpd == null) {
- mSpd = new SingleProgressDialog(ExportIdentityActivity.this, getString(R.string.progress_backup_identity_drive), 0);
- }
-
- mSpd.show();
-
- IdentityController.getExportIdentity(ExportIdentityActivity.this, user, password,
- new IAsyncCallbackTuple<byte[], String>() {
-
- @Override
- public void handleResponse(byte[] identityData, final String message) {
-
- if (identityData == null) {
-
- ExportIdentityActivity.this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- mSpd.hide();
- Utils.makeToast(ExportIdentityActivity.this,
- message == null ? getString(R.string.could_not_backup_identity_to_google_drive)
- : message);
-
- }
- });
-
- return;
- }
-
- final boolean backedUp = updateIdentityDriveFile(identityDirId, user, identityData);
-
- ExportIdentityActivity.this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- mSpd.hide();
- if (!backedUp) {
- Utils.makeToast(ExportIdentityActivity.this,
- getString(R.string.could_not_backup_identity_to_google_drive));
- }
- else {
- Utils.makeToast(ExportIdentityActivity.this,
- getString(R.string.identity_successfully_backed_up_to_google_drive));
- }
- }
- });
-
- }
- });
-
- }
- else {
- Utils.makeToast(ExportIdentityActivity.this, getString(R.string.no_identity_exported));
- }
- }
- });
-
- }
-
- ;
-
- }.execute();
-
}
public String ensureDriveIdentityDirectory() {
String identityDirId = null;
- try {
- // see if identities directory exists
-
- FileList identityDir = mDriveHelper.getDriveService().files().list()
- .setQ("title = '" + SurespotConstants.DRIVE_IDENTITY_FOLDER + "' and trashed = false").execute();
- List<com.google.api.services.drive.model.File> items = identityDir.getItems();
-
- if (items.size() > 0) {
- for (com.google.api.services.drive.model.File file : items) {
- if (!file.getLabels().getTrashed()) {
- SurespotLog.d(TAG, "identity folder already exists");
- identityDirId = file.getId();
- }
- }
- }
- if (identityDirId == null) {
- com.google.api.services.drive.model.File file = new com.google.api.services.drive.model.File();
- file.setTitle(SurespotConstants.DRIVE_IDENTITY_FOLDER);
- file.setMimeType(SurespotConstants.MimeTypes.DRIVE_FOLDER);
-
- com.google.api.services.drive.model.File insertedFile = mDriveHelper.getDriveService().files().insert(file).execute();
-
- identityDirId = insertedFile.getId();
-
- }
-
- }
- catch (UserRecoverableAuthIOException e) {
- try {
- startActivityForResult(e.getIntent(), SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH);
- }
- catch (NullPointerException npe) {
- return null;
- }
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "createDriveIdentityDirectory");
- }
- catch (SecurityException e) {
- SurespotLog.e(TAG, e, "createDriveIdentityDirectory");
- // when key is revoked on server this happens...should return userrecoverable it seems
- // was trying to figure out how to test this
- // seems like the only way around this is to remove and re-add android account:
- // http://stackoverflow.com/questions/5805657/revoke-account-permission-for-an-app
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ExportIdentityActivity.this, getString(R.string.re_add_google_account));
-
- }
- });
-
- }
return identityDirId;
-
}
public boolean updateIdentityDriveFile(String idDirId, String username, byte[] identityData) {
- try {
- // gzip identity for consistency - fucked up on this, now have to add code to handle both (gzipped and not gzipped) on restore from google drive
- // RM#260
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- GZIPOutputStream gzout = new GZIPOutputStream(out);
- gzout.write(identityData);
- gzout.close();
- byte[] gzIdData = out.toByteArray();
-
- ByteArrayContent content = new ByteArrayContent("application/octet-stream", gzIdData);
- String caseInsensitiveUsername = IdentityController.caseInsensitivize(username);
- String filename = caseInsensitiveUsername + IdentityController.IDENTITY_EXTENSION;
-
- // see if identity exists
- com.google.api.services.drive.model.File file = null;
- ChildReference idFile = getIdentityFile(idDirId, caseInsensitiveUsername);
- if (idFile != null) {
-
- // update
- file = mDriveHelper.getDriveService().files().get(idFile.getId()).execute();
- if (file != null && !file.getLabels().getTrashed()) {
- SurespotLog.d(TAG, "updateIdentityDriveFile, updating existing identity file: %s", filename);
- mDriveHelper.getDriveService().files().update(file.getId(), file, content).execute();
- return true;
- }
- }
-
- // create
- SurespotLog.d(TAG, "updateIdentityDriveFile, inserting new identity file: %s", filename);
-
- file = new com.google.api.services.drive.model.File();
- ParentReference pr = new ParentReference();
- pr.setId(idDirId);
- ArrayList<ParentReference> parent = new ArrayList<ParentReference>(1);
- parent.add(pr);
- file.setParents(parent);
- file.setTitle(filename);
- file.setMimeType(SurespotConstants.MimeTypes.SURESPOT_IDENTITY);
-
- com.google.api.services.drive.model.File insertedFile = mDriveHelper.getDriveService().files().insert(file, content).execute();
- return true;
-
- }
- catch (UserRecoverableAuthIOException e) {
- startActivityForResult(e.getIntent(), SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH);
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "updateIdentityDriveFile");
- }
- catch (SecurityException e) {
- SurespotLog.e(TAG, e, "createDriveIdentityDirectory");
- // when key is revoked on server this happens...should return userrecoverable it seems
- // was trying to figure out how to test this
- // seems like the only way around this is to remove and re-add android account:
- // http://stackoverflow.com/questions/5805657/revoke-account-permission-for-an-app
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ExportIdentityActivity.this, getString(R.string.re_add_google_account));
-
- }
- });
-
- }
return false;
}
+/*
private ChildReference getIdentityFile(String identityDirId, String username) throws IOException {
ChildReference idFile = null;
-
- // "title = '" + username + "'";
- ChildList identityFileList = mDriveHelper.getDriveService().children().list(identityDirId)
- .setQ("title='" + username + IdentityController.IDENTITY_EXTENSION + "' and trashed = false").execute();
- List<ChildReference> items = identityFileList.getItems();
-
- if (items.size() == 1) {
- SurespotLog.d(TAG, "getIdentityFile, found identity file for: %s", username);
- idFile = items.get(0);
- // for (ChildReference file : items) {
- // if (!file.getLabels().getTrashed()) {
- // SurespotLog.d(TAG, "identity folder already exists");
- // identityDirId = file.getId();
- // }
- // }
- }
- else {
- if (items.size() > 1) {
- // delete all but one identity...should never happen
- SurespotLog.w(TAG, "$d identities with the same filename found on google drive: %s", items.size(), username);
-
- for (int i = items.size(); i > 1; i--) {
- SurespotLog.w(TAG, "deleting identity file from google drive %s", username);
- mDriveHelper.getDriveService().files().delete(items.get(i - 1).getId()).execute();
- }
- idFile = items.get(0);
- }
- }
-
return idFile;
}
+*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
@@ -527,25 +129,6 @@ public class ExportIdentityActivity extends SherlockActivity {
finish();
return true;
- case R.id.menu_help:
- View view = LayoutInflater.from(this).inflate(R.layout.dialog_help_backup, null);
-
- TextView tv = (TextView) view.findViewById(R.id.helpBackup1);
- UIUtils.setHtml(this, tv, R.string.help_backup_what);
-
- TextView t1 = (TextView) view.findViewById(R.id.helpBackup2);
- t1.setText(Html.fromHtml(getString(R.string.help_backup_local)));
- t1.setMovementMethod(LinkMovementMethod.getInstance());
-
- TextView t2 = (TextView) view.findViewById(R.id.helpBackup3);
- UIUtils.setHtml(this, t2, R.string.help_backup_drive1);
-
- t2 = (TextView) view.findViewById(R.id.helpBackup4);
- t2.setText(R.string.help_backup_drive2);
-
- mDialog = UIUtils.showHelpDialog(this, R.string.surespot_help, view, false);
- return true;
-
default:
return super.onOptionsItemSelected(item);
}
@@ -563,13 +146,6 @@ public class ExportIdentityActivity extends SherlockActivity {
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_MENU) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
- openOptionsMenuDeferred();
- }
- return true;
- }
-
return super.onKeyUp(keyCode, event);
}

View file

@ -1,824 +0,0 @@
diff --git a/surespot/src/main/java/com/twofours/surespot/backup/ImportIdentityActivity.java b/tmp/I3.java
index 59d7759..039ec79 100644
--- a/surespot/src/main/java/com/twofours/surespot/backup/ImportIdentityActivity.java
+++ b/tmp/I3.java
@@ -32,15 +32,15 @@ import android.widget.ViewSwitcher;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.MenuItem;
-import com.google.android.gms.auth.GoogleAuthUtil;
-import com.google.android.gms.common.AccountPicker;
-import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
-import com.google.api.client.googleapis.json.GoogleJsonResponseException;
-import com.google.api.client.util.DateTime;
-import com.google.api.services.drive.Drive;
-import com.google.api.services.drive.model.ChildList;
-import com.google.api.services.drive.model.ChildReference;
-import com.google.api.services.drive.model.FileList;
+
+
+
+
+
+
+
+
+
import com.twofours.surespot.R;
import com.twofours.surespot.activities.MainActivity;
import com.twofours.surespot.common.FileUtils;
@@ -59,11 +59,11 @@ public class ImportIdentityActivity extends SherlockActivity {
private TextView mAccountNameDisplay;
private boolean mShowingLocal;
- private DriveHelper mDriveHelper;
+
private ListView mDriveListview;
private SingleProgressDialog mSpd;
private SingleProgressDialog mSpdLoadIdentities;
- public static final String[] ACCOUNT_TYPE = new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE };
+ public static final String[] ACCOUNT_TYPE = new String[] { "dummy" };
private static final String ACTION_DRIVE_OPEN = "com.google.android.apps.drive.DRIVE_OPEN";
private static final String EXTRA_FILE_ID = "resourceId";
private String mFileId;
@@ -81,778 +81,33 @@ public class ImportIdentityActivity extends SherlockActivity {
Utils.configureActionBar(this, getString(R.string.identity), getString(R.string.restore), true);
Intent intent = getIntent();
-
- Utils.logIntent(TAG, intent);
- mSignup = intent.getBooleanExtra("signup", false);
- mSpdLoadIdentities = new SingleProgressDialog(ImportIdentityActivity.this, getString(R.string.progress_loading_identities), 0);
-
- final String action = intent.getAction();
-
- // Make sure the Action is DRIVE_OPEN.
- if (ACTION_DRIVE_OPEN.equals(action)) {
- // Get the Drive file ID.
- mFileId = intent.getStringExtra(EXTRA_FILE_ID);
- mMode = MODE_DRIVE;
- }
- else {
- mMode = MODE_NORMAL;
-
- }
-
- mDriveHelper = new DriveHelper(getApplicationContext(), mMode == MODE_NORMAL);
-
- Account account = mDriveHelper.getDriveAccount();
- mAccountNameDisplay = (TextView) findViewById(R.id.restoreDriveAccount);
- mAccountNameDisplay.setText(account == null ? getString(R.string.no_google_account_selected) : account.name);
-
- Button chooseAccountButton = (Button) findViewById(R.id.bSelectDriveAccount);
- chooseAccountButton.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- chooseAccount(true);
- }
- });
-
- mDriveListview = (ListView) findViewById(R.id.lvDriveIdentities);
- mDriveListview.setEmptyView(findViewById(R.id.no_drive_identities));
-
- mDriveListview.setOnItemClickListener(new OnItemClickListener() {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
- if (IdentityController.getIdentityCount(ImportIdentityActivity.this) >= SurespotConstants.MAX_IDENTITIES) {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.login_max_identities_reached, SurespotConstants.MAX_IDENTITIES));
- return;
- }
-
- @SuppressWarnings("unchecked")
- final Map<String, String> map = (Map<String, String>) mDriveAdapter.getItem(position);
-
- final String user = map.get("name");
-
- // make sure file we're going to save to is writable
- // before we
- // start
- if (!IdentityController.ensureIdentityFile(ImportIdentityActivity.this, user, true)) {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_restore_identity_name, user));
- if (mMode == MODE_DRIVE) {
- finish();
- }
- return;
- }
-
- mDialog = UIUtils.passwordDialog(ImportIdentityActivity.this, getString(R.string.restore_identity, user),
- getString(R.string.enter_password_for, user), new IAsyncCallback<String>() {
- @Override
- public void handleResponse(final String password) {
- if (!TextUtils.isEmpty(password)) {
- if (mSpd == null) {
- mSpd = new SingleProgressDialog(ImportIdentityActivity.this, getString(R.string.progress_restoring_identity), 0);
- }
- mSpd.show();
-
- final String url = map.get("url");
-
- new AsyncTask<Void, Void, Void>() {
-
- @Override
- protected Void doInBackground(Void... params) {
- byte[] identityBytes = mDriveHelper.getFileContent(url);
- identityBytes = FileUtils.gunzipIfNecessary(identityBytes);
-
- IdentityController.importIdentityBytes(ImportIdentityActivity.this, user, password, identityBytes,
- new IAsyncCallback<IdentityOperationResult>() {
-
- @Override
- public void handleResponse(final IdentityOperationResult response) {
- Utils.clearIntent(getIntent());
- ImportIdentityActivity.this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- mSpd.hide();
- Utils.makeLongToast(ImportIdentityActivity.this, response.getResultText());
-
- if (response.getResultSuccess()) {
- // if
- // launched
- // from
- // signup
- // and
- // successful
- // import,
- // go
- // to
- // login
- // screen
- if (mSignup || mMode == MODE_DRIVE) {
- IdentityController.logout();
-
- Intent intent = new Intent(ImportIdentityActivity.this, MainActivity.class);
- intent.putExtra(SurespotConstants.ExtraNames.MESSAGE_TO, user);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- finish();
- }
- }
-
- }
- });
-
- }
-
- });
- return null;
- }
-
- }.execute();
-
- }
- else {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.no_identity_imported));
- }
- }
- });
-
- }
-
- });
-
- mSwitcher = (ViewSwitcher) findViewById(R.id.restoreViewSwitcher);
- RadioButton rbRestoreLocal = (RadioButton) findViewById(R.id.rbRestoreLocal);
- RadioButton rbRestoreDrive = (RadioButton) findViewById(R.id.rbRestoreDrive);
- if (mMode == MODE_NORMAL) {
-
- rbRestoreLocal.setTag("local");
- rbRestoreLocal.setChecked(true);
- mShowingLocal = true;
-
- rbRestoreDrive.setTag("drive");
-
- OnClickListener rbClickListener = new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- // Is the button now checked?
- boolean checked = ((RadioButton) view).isChecked();
-
- if (checked) {
- if (view.getTag().equals("drive")) {
- if (mShowingLocal) {
-
- mDriveListview.setAdapter(null);
- mSwitcher.showNext();
- mShowingLocal = false;
-
- if (mMode == MODE_NORMAL) {
- if (mDriveHelper.getDriveAccount() != null) {
- Drive drive = mDriveHelper.getDriveService();
- if (drive != null) {
- mSpdLoadIdentities.show();
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- populateDriveIdentities(true);
-
- return null;
- }
-
- }.execute();
- }
- }
- else {
- chooseAccount(false);
- }
- }
-
- }
- }
- else {
- if (!mShowingLocal) {
- mSwitcher.showPrevious();
- mShowingLocal = true;
- }
- }
-
- }
- }
- };
-
- rbRestoreDrive.setOnClickListener(rbClickListener);
- rbRestoreLocal.setOnClickListener(rbClickListener);
- setupLocal();
-
- }
- else {
- rbRestoreLocal.setVisibility(View.GONE);
- rbRestoreDrive.setChecked(true);
- mSwitcher.showNext();
- mShowingLocal = false;
-
- new AsyncTask<Void, Void, Void>() {
-
- @Override
- protected Void doInBackground(Void... params) {
- restoreExternal(true);
- return null;
- }
- }.execute();
-
- }
-
}
private void setupLocal() {
-
- ListView lvIdentities = (ListView) findViewById(R.id.lvLocalIdentities);
- lvIdentities.setEmptyView(findViewById(R.id.no_local_identities));
-
- List<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>();
-
- // query the filesystem for identities
- final File exportDir = FileUtils.getIdentityExportDir();
- File[] files = IdentityController.getExportIdentityFiles(this, exportDir.getPath());
-
- TextView tvLocalLocation = (TextView) findViewById(R.id.restoreLocalLocation);
-
- if (files != null) {
- TreeMap<Long, File> sortedFiles = new TreeMap<Long, File>(new Comparator<Long>() {
- public int compare(Long o1, Long o2) {
- return o2.compareTo(o1);
- }
- });
-
- for (File file : files) {
- sortedFiles.put(file.lastModified(), file);
- }
-
- for (File file : sortedFiles.values()) {
- long lastModTime = file.lastModified();
- String date = DateFormat.getDateFormat(this).format(lastModTime) + " " + DateFormat.getTimeFormat(this).format(lastModTime);
-
- HashMap<String, String> map = new HashMap<String, String>();
- map.put("name", IdentityController.getIdentityNameFromFile(file));
- map.put("date", date);
- items.add(map);
- }
- }
-
- final SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.identity_item, new String[] { "name", "date" }, new int[] {
- R.id.identityBackupName, R.id.identityBackupDate });
- tvLocalLocation.setText(exportDir.toString());
- lvIdentities.setVisibility(View.VISIBLE);
-
- lvIdentities.setAdapter(adapter);
- lvIdentities.setOnItemClickListener(new OnItemClickListener() {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- if (IdentityController.getIdentityCount(ImportIdentityActivity.this) >= SurespotConstants.MAX_IDENTITIES) {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.login_max_identities_reached, SurespotConstants.MAX_IDENTITIES));
- return;
- }
-
- @SuppressWarnings("unchecked")
- Map<String, String> map = (Map<String, String>) adapter.getItem(position);
-
- final String user = map.get("name");
-
- // make sure file we're going to save to is writable before we
- // start
- if (!IdentityController.ensureIdentityFile(ImportIdentityActivity.this, user, true)) {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_import_identity));
- if (mMode == MODE_DRIVE) {
- finish();
- }
- return;
- }
-
- UIUtils.passwordDialog(ImportIdentityActivity.this, getString(R.string.restore_identity, user), getString(R.string.enter_password_for, user),
- new IAsyncCallback<String>() {
- @Override
- public void handleResponse(String result) {
- if (!TextUtils.isEmpty(result)) {
- IdentityController.importIdentity(ImportIdentityActivity.this, exportDir, user, result,
- new IAsyncCallback<IdentityOperationResult>() {
-
- @Override
- public void handleResponse(IdentityOperationResult response) {
-
- Utils.makeLongToast(ImportIdentityActivity.this, response.getResultText());
-
- if (response.getResultSuccess()) {
- // if launched
- // from
- // signup and
- // successful
- // import, go to
- // login
- // screen
- if (mSignup) {
- IdentityController.logout();
-
- Intent intent = new Intent(ImportIdentityActivity.this, MainActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- }
-
- }
-
- }
- });
- }
- else {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.no_identity_imported));
- }
-
- }
- });
-
- }
-
- });
-
}
private void restoreExternal(boolean firstTime) {
- if (!firstTime) {
-
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_import_identity));
- finish();
- return;
- }
- });
- }
-
- if (mDriveHelper.getDriveAccount() == null) {
- chooseAccount(false);
- return;
- }
-
- List<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>();
- try {
- com.google.api.services.drive.model.File file = mDriveHelper.getDriveService().files().get(mFileId).execute();
-
- if (!file.getLabels().getTrashed()) {
-
- DateTime lastModTime = file.getModifiedDate();
-
- String date = DateFormat.getDateFormat(this).format(lastModTime.getValue()) + " "
- + DateFormat.getTimeFormat(this).format(lastModTime.getValue());
- HashMap<String, String> map = new HashMap<String, String>();
- String name = IdentityController.getIdentityNameFromFilename(file.getTitle());
- map.put("name", name);
- map.put("date", date);
- map.put("url", file.getDownloadUrl());
- items.add(map);
- }
- else {
- SurespotLog.w(TAG, "could not retrieve identity from google drive");
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_import_identity));
- }
- });
- finish();
-
- return;
- }
-
- }
- catch (UserRecoverableAuthIOException e) {
- try {
- startActivityForResult(e.getIntent(), SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH);
- }
- catch (NullPointerException npe) {
- }
- return;
-
- }
- catch (GoogleJsonResponseException e) {
- SurespotLog.w(TAG, e, "could not retrieve identity from google drive");
-
- // if they're restoring from drive, selecting different account in
- // surespot will cause 404
- if (e.getStatusCode() == 404 && mMode == MODE_DRIVE) {
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.could_not_import_identity_drive_404));
- }
- });
-
- }
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "could not retrieve identity from google drive");
-
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_import_identity));
- }
- });
-
- finish();
- return;
-
- }
- catch (SecurityException e) {
- SurespotLog.w(TAG, e, "createDriveIdentityDirectory");
- // when key is revoked on server this happens...should return
- // userrecoverable it seems
- // was trying to figure out how to test this
- // seems like the only way around this is to remove and re-add
- // android account:
- // http://stackoverflow.com/questions/5805657/revoke-account-permission-for-an-app
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.re_add_google_account));
-
- }
- });
-
- finish();
- return;
- }
-
- SurespotLog.v(TAG, "loaded %d identities from google drive", items.size());
-
- mDriveAdapter = new SimpleAdapter(this, items, R.layout.identity_item, new String[] { "name", "date" }, new int[] { R.id.identityBackupName,
- R.id.identityBackupDate });
-
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
-
- mDriveListview.setAdapter(mDriveAdapter);
-
- }
- });
-
}
private void populateDriveIdentities(boolean firstAttempt) {
-
- String identityDirId = ensureDriveIdentityDirectory();
- if (identityDirId == null) {
- if (!firstAttempt) {
-
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_list_identities_from_google_drive));
- }
- });
- }
- return;
- }
-
- List<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>();
- try {
- // query the drive for identities
- ChildList fileList = getIdentityFiles(identityDirId);
- if (fileList == null) {
- SurespotLog.v(TAG, "no identity backup files found on google drive");
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- mSpdLoadIdentities.hide();
- }
- });
- return;
-
- }
-
- List<ChildReference> refs = fileList.getItems();
-
- if (refs.size() == 0) {
- SurespotLog.v(TAG, "no identity backup files found on google drive");
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- mSpdLoadIdentities.hide();
- }
- });
- return;
- }
-
- if (refs.size() > 0) {
- TreeMap<Long, com.google.api.services.drive.model.File> sortedFiles = new TreeMap<Long, com.google.api.services.drive.model.File>(
- new Comparator<Long>() {
- public int compare(Long o1, Long o2) {
- return o2.compareTo(o1);
- }
- });
- for (ChildReference ref : refs) {
- com.google.api.services.drive.model.File file = mDriveHelper.getDriveService().files().get(ref.getId()).execute();
-
- if (!file.getLabels().getTrashed()) {
- DateTime lastModTime = file.getModifiedDate();
- sortedFiles.put(lastModTime.getValue(), file);
- }
- }
-
- for (com.google.api.services.drive.model.File file : sortedFiles.values()) {
- DateTime lastModTime = file.getModifiedDate();
- String date = DateFormat.getDateFormat(this).format(lastModTime.getValue()) + " "
- + DateFormat.getTimeFormat(this).format(lastModTime.getValue());
- HashMap<String, String> map = new HashMap<String, String>();
- String name = IdentityController.getIdentityNameFromFilename(file.getTitle());
- map.put("name", name);
- map.put("date", date);
- map.put("url", file.getDownloadUrl());
- items.add(map);
- }
-
- }
- }
- catch (UserRecoverableAuthIOException e) {
- try {
- startActivityForResult(e.getIntent(), SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH);
- }
- catch (NullPointerException npe) {
- }
- return;
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "could not retrieve identities from google drive");
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.could_not_list_identities_from_google_drive));
- }
- });
-
- return;
-
- }
- catch (SecurityException e) {
- SurespotLog.w(TAG, e, "createDriveIdentityDirectory");
- // when key is revoked on server this happens...should return
- // userrecoverable it seems
- // was trying to figure out how to test this
- // seems like the only way around this is to remove and re-add
- // android account:
- // http://stackoverflow.com/questions/5805657/revoke-account-permission-for-an-app
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.re_add_google_account));
-
- }
- });
-
- return;
- }
-
- SurespotLog.v(TAG, "loaded %d identities from google drive", items.size());
-
- mDriveAdapter = new SimpleAdapter(this, items, R.layout.identity_item, new String[] { "name", "date" }, new int[] { R.id.identityBackupName,
- R.id.identityBackupDate });
-
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
-
- mSpdLoadIdentities.hide();
- mDriveListview.setAdapter(mDriveAdapter);
-
- }
- });
-
}
+/*
private ChildList getIdentityFiles(String identityDirId) {
ChildList identityFileList = null;
- try {
- identityFileList = mDriveHelper.getDriveService().children().list(identityDirId).execute();
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "getIdentityFiles");
- }
return identityFileList;
}
-
+*/
public String ensureDriveIdentityDirectory() {
String identityDirId = null;
- try {
- // see if identities directory exists
-
- FileList identityDir = mDriveHelper.getDriveService().files().list()
- .setQ("title = '" + SurespotConstants.DRIVE_IDENTITY_FOLDER + "' and trashed = false").execute();
- List<com.google.api.services.drive.model.File> items = identityDir.getItems();
-
- if (items.size() > 0) {
- for (com.google.api.services.drive.model.File file : items) {
- if (!file.getLabels().getTrashed()) {
- SurespotLog.d(TAG, "identity folder already exists");
- identityDirId = file.getId();
- break;
- }
- }
- }
- if (identityDirId == null) {
- com.google.api.services.drive.model.File file = new com.google.api.services.drive.model.File();
- file.setTitle(SurespotConstants.DRIVE_IDENTITY_FOLDER);
- file.setMimeType(SurespotConstants.MimeTypes.DRIVE_FOLDER);
-
- com.google.api.services.drive.model.File insertedFile = mDriveHelper.getDriveService().files().insert(file).execute();
-
- identityDirId = insertedFile.getId();
-
- }
-
- }
- catch (UserRecoverableAuthIOException e) {
- SurespotLog.w(TAG, e, "createDriveIdentityDirectory");
- //try {
- startActivityForResult(e.getIntent(), SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH);
-// }
-// catch (NullPointerException npe) {
-// return null;
-// }
- }
- catch (IOException e) {
- SurespotLog.w(TAG, e, "createDriveIdentityDirectory");
- }
- catch (SecurityException e) {
- SurespotLog.e(TAG, e, "createDriveIdentityDirectory");
- // when key is revoked on server this happens...should return
- // userrecoverable it seems
- // was trying to figure out how to test this
- // seems like the only way around this is to remove and re-add
- // android account:
- // http://stackoverflow.com/questions/5805657/revoke-account-permission-for-an-app
- this.runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- Utils.makeLongToast(ImportIdentityActivity.this, getString(R.string.re_add_google_account));
-
- }
- });
-
- }
-
return identityDirId;
}
// //////// DRIVE
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case SurespotConstants.IntentRequestCodes.CHOOSE_GOOGLE_ACCOUNT:
-
- if (resultCode == Activity.RESULT_OK && data != null) {
-
- SurespotLog.w("Preferences", "SELECTED ACCOUNT WITH EXTRA: %s", data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME));
- Bundle b = data.getExtras();
-
- String accountName = b.getString(AccountManager.KEY_ACCOUNT_NAME);
-
- SurespotLog.d("Preferences", "Selected account: " + accountName);
- if (accountName != null && accountName.length() > 0) {
-
- mDriveHelper.setDriveAccount(accountName);
- mAccountNameDisplay.setText(accountName);
- if (mDriveListview != null) {
- mDriveListview.setAdapter(null);
- }
- if (mMode == MODE_NORMAL) {
- mSpdLoadIdentities.show();
- }
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- if (mMode == MODE_NORMAL) {
- populateDriveIdentities(true);
- }
- else {
- restoreExternal(true);
- }
- return null;
- }
-
- }.execute();
- }
- }
- break;
-
- case SurespotConstants.IntentRequestCodes.REQUEST_GOOGLE_AUTH:
- if (resultCode == Activity.RESULT_OK) {
- SurespotLog.v(TAG, "onActivityResult OK");
- if (mMode == MODE_NORMAL) {
- mSpdLoadIdentities.show();
- }
- new AsyncTask<Void, Void, Boolean>() {
-
- @Override
- protected Boolean doInBackground(Void... params) {
- Drive drive = mDriveHelper.getDriveService();
- if (drive != null) {
- if (mMode == MODE_NORMAL) {
- populateDriveIdentities(false);
-
- }
- else {
- restoreExternal(false);
- }
- return true;
- }
-
- return false;
-
- }
-
- protected void onPostExecute(Boolean result) {
- if (!result) {
- mSpdLoadIdentities.hide();
- }
- };
- }.execute();
-
- }
- else {
- SurespotLog.v(TAG, "onActivityResult not OK");
- mSpdLoadIdentities.hide();
- }
- }
}
private void chooseAccount(boolean ask) {
- String descriptionText = null;
- if (mMode == MODE_DRIVE) {
- descriptionText = getString(R.string.pick_same_drive_account);
- }
-
- Intent accountPickerIntent = AccountPicker.newChooseAccountIntent(null, null, ACCOUNT_TYPE, ask || mMode == MODE_DRIVE, descriptionText, null, null,
- null);
- try {
- startActivityForResult(accountPickerIntent, SurespotConstants.IntentRequestCodes.CHOOSE_GOOGLE_ACCOUNT);
- }
- catch (ActivityNotFoundException e) {
- Utils.makeToast(ImportIdentityActivity.this, getString(R.string.device_does_not_support_google_drive));
- SurespotLog.i(TAG, e, "chooseAccount");
- }
-
}
@Override

View file

@ -1 +0,0 @@
Verschlüsselte Nachrichten versenden

View file

@ -1 +0,0 @@
Send encrypted text messages

View file

@ -1 +0,0 @@
Enviar mensajes de texto cifrados

View file

@ -1 +0,0 @@
Envoyer des messages texte cryptés

View file

@ -1 +0,0 @@
שליחת מסרונים (SMS) מוצפנים

View file

@ -1 +0,0 @@
Krypterte tekstmeldinger

View file

@ -1 +0,0 @@
Wysyłanie zaszyfrowanych wiadomości tekstowych

View file

@ -1 +0,0 @@
Envia mensagens de texto criptografadas

View file

@ -1 +0,0 @@
Envia mensagens de texto criptografadas

View file

@ -1 +0,0 @@
Envia mensagens de texto criptografadas

View file

@ -1 +0,0 @@
Şifreli metin iletileri gönderin

View file

@ -1 +0,0 @@
发送加密文本消息

View file

@ -1,28 +0,0 @@
Categories:
- Navigation
License: Apache-2.0
SourceCode: https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider
IssueTracker: https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider/issues
AutoName: AndroidMockGpx
Description: |-
Stream GPX files through the Mock Location provider to simulate GPS on the
device.
Requires: https://f-droid.org/packages/org.openintents.filemanager
RepoType: git
Repo: https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider.git
Builds:
- versionName: '1.0'
versionCode: 1
disable: missing deps, jar present
commit: 584b47e467055db3b7f678702e1da5727b18fdf6
subdir: android
target: android-15
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '1.0'
CurrentVersionCode: 1

View file

@ -1 +0,0 @@
Simulate GPS through prerecordet GPX files

View file

@ -1,68 +0,0 @@
Categories:
- Navigation
License: LGPL-3.0-only
AuthorName: Ushahidi
AuthorEmail: contact@ushahidi.com
AuthorWebSite: https://www.ushahidi.com/
SourceCode: https://github.com/ushahidi/Ushahidi_Android
IssueTracker: https://github.com/ushahidi/Ushahidi_Android/issues
AutoName: Ushahidi
Description: |-
Ushahidi is a web and mobile platform that allows you to create, visualize and
share stories on a map. It allows individuals to share their stories on their
own terms using the tools they already have. Sync with any Ushahidi deployment.
Send reports with images and location data as well as receive alerts from others
who have sent in reports to the site.
The app supports loading of multiple deployments at one time, quick filtering
through reports, exploring incident locations on the map, viewing report photos,
news article, media as well as sharing reports via email, SMS or Twitter. Once
the data has been downloaded, the app can function without an internet
connection, allowing accurate collection of data utilizing the devices camera
and GPS capabilities
RepoType: git
Repo: https://github.com/ushahidi/Ushahidi_Android.git
Builds:
- versionName: 3.1.4
versionCode: 29
disable: requires Google Maps and API keys (for the moment)
commit: unknown - see disabled
subdir: Themes/Ushahidi
init: rm -f ../../Libraries/cwacmerge/build.xml
prebuild:
- mkdir src
- cp ../../Core/libs/* libs/
- rm -f libs/action*
- sed -i 's/\"com.google.android.maps\"/\"com.google.android.maps\" android:required="false"/g'
AndroidManifest.xml
androidupdate:
- .
- ../../Core
- ../../Libraries/cwacmerge
- ../../Libraries/abs
- versionName: '3.9'
versionCode: 36
disable: requires Google Maps and API keys (for the moment)
commit: unknown - see disabled
subdir: Themes/Ushahidi
init: rm -f ../../Libraries/cwacmerge/build.xml
prebuild:
- mkdir src
- cp ../../Core/libs/* libs/
- rm -f libs/action*
- sed -i 's/\"com.google.android.maps\"/\"com.google.android.maps\" android:required="false"/g'
AndroidManifest.xml
androidupdate:
- .
- ../../Core
- ../../Libraries/cwacmerge
- ../../Libraries/abs
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: '3.9'
CurrentVersionCode: 36

View file

@ -1 +0,0 @@
Mapping tools

View file

@ -1,37 +0,0 @@
Categories:
- System
License: GPL-3.0-only
SourceCode: https://github.com/bhubie/Expander
IssueTracker: https://github.com/bhubie/Expander/issues
AutoName: Expander
Description: |-
Allows you to define an unlimited number of text shortcuts that will expand into
a full phrases when typed.
RepoType: git
Repo: https://github.com/bhubie/Expander
Builds:
- versionName: '0.8'
versionCode: 12
disable: pre-release constraint layout
commit: 2dcb80e9200507c77cfc064449347e64c2f660ce
subdir: app
gradle:
- yes
prebuild: sed -i -e '/crittercism/d' build.gradle
- versionName: 0.8.5
versionCode: 13
disable: pre-release constraint layout
commit: ee0b5ab379e275a77db8a070796be08d71463adc
subdir: app
gradle:
- yes
prebuild: sed -i -e '/crittercism/d' build.gradle
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 0.8.5
CurrentVersionCode: 13

View file

@ -1 +0,0 @@
Expand keywords to whole phrases

View file

@ -1,26 +0,0 @@
Categories:
- Theming
License: Apache-2.0
WebSite: http://chislonchow.wordpress.com/2012/03/17/legacy-launcher-for-android
SourceCode: https://github.com/chislon/LegacyLauncher
IssueTracker: https://github.com/chislon/LegacyLauncher/issues
AutoName: Legacy Launcher
Description: |-
Alternative launcher or home screen for low-end devices. It's based on the
popular ADW Launcher Free.
RepoType: git
Repo: https://github.com/chislon/LegacyLauncher
Builds:
- versionName: 0.39.11
versionCode: 55
disable: doesn't build; use of hidden api
commit: 95273bf6c89f1f5746868d0f02b33e5d9236c4a8
target: android-10
AutoUpdateMode: None
UpdateCheckMode: RepoManifest
CurrentVersion: 0.39.11
CurrentVersionCode: 55

View file

@ -1 +0,0 @@
Launcher for low-end devices

View file

@ -1,19 +0,0 @@
Disabled: Needs simple-build-tool to build
Categories:
- Internet
License: MIT
SourceCode: https://github.com/jberkel/gist-it
IssueTracker: https://github.com/jberkel/gist-it/issues
Summary: Github Gist API client
Description: |-
Create and edit gists (snippets of text hosted at https://gist.github.com) with
this Android app.
RepoType: git
Repo: https://github.com/jberkel/gist-it.git
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: 0.1.4
CurrentVersionCode: 5

View file

@ -1 +0,0 @@
Wlppr.com pictures in Muzei