pkern / kitcard-reader

An app to read the purse of the student's card of universities in Karlsruhe and Pforzheim (NOTE: This app no longer works with the current system, so this code is effectively obsolete.)
GNU General Public License v2.0
11 stars 2 forks source link

Fixed app not being installable on many devices, added gradle build system and changed to material design #29

Closed freundTech closed 5 years ago

freundTech commented 6 years ago

Should fix #11, #25 and #27. Also makes #26 easy.

pkern commented 6 years ago

Are you telling me that the app actually works on non-Mifare devices?

freundTech commented 6 years ago

I guess. App store shows my phone as unsupported (LG G4), but after installing it manually it works.

EDIT: https://www.shopnfc.it/en/content/7-nfc-compatibility Shows LG G4 as not supporting Mifare Classic, but the app worked without problems.

pkern commented 6 years ago

So what's your model alias? (Huge list on https://www.devicespecifications.com/en/model/52f833d1) Maybe I can dig up if this is a model variation. I'd really not want to list the app as compatible with devices and then people install it and it does not work. And the Mifare bit is the one that actually matters here. And I can totally imagine LG shipping with different NFC chips.

(Don't get me wrong, I like that someone shows up with commits. :)

pkern commented 6 years ago

Let's maybe split this pull request into two: One for the design/build system fixes (although two would be neater there too) and one for the manifest compatibility change.

freundTech commented 6 years ago

I googled around a bit and it looks like there are multiple devices out there that support Mifare Classic without reporting com.nxp.mifare. Maybe a better option would be to set it to optional, then check on first startup and display a warning if it's not supported.

That would also be a lot more useful to people with unsupported phones than play store just telling them that the app can't be installed without giving a reason.

I'll split up the PR.

pkern commented 6 years ago

I'm not a fan of a hand-waivy "there are multiple devices out there" and then offer the app to all NFC-capable devices, many of which can't support the app. Model and build numbers would be most helpful to get the records fixed. (And G4 is unfortunately not a model number, because SKUs differ by country/region/feature set.)

freundTech commented 6 years ago

I specifically found mentions online of devices supporting mifare classic, but not reporting com.nxp.mifare for LG G4 (h815, which is the same I have), HTC One X, Google Pixel 2 and Xperia Z2 (D6543)

This post https://stackoverflow.com/a/32760130 also mentions many vendors not setting it correctly.

I've sent a pull request with the build system and will send the rest after that one is merged to prevent merge conflicts.

pkern commented 6 years ago

LG G4 is supported according to Play Store's Device Catalog. Unfortunately the code name listed is "p1". There are unsupported devices that are named similarly (like G4s/G4c) and supported ones that are similar (G4 Beat).

Now I suppose I could test out if that's really the case with the Pixel 2. But then again, while that Stack Overflow post is accurate "many vendors don't" is again too hand-wavy for me. For 100% of the previous cases the device did not actually support Mifare Classic.

pkern commented 6 years ago

Turns out it even works with the Pixel (2016) and is just installable from the Play Store. Which also means I have a development platform again. I'll try to take some time over the weekend to look at this. Previously all my devices were (thought to be) incompatible, so there's that. :)

Also it seems it needs to be built against a new SDK version because otherwise you get a warning on startup when on P. Oh well.

pkern commented 6 years ago

So this needs some rebasing and retitling now to be confined to the design changes, I think?

pkern commented 5 years ago

Closing this as the project is obsolete due to the new KITCard system not publishing any specs and the app hence having been depublished.