Android FAQ

SourceForge.net Logo

This FAQ is currently focused on the new (for beta 53) play-via-SMS feature.

What permissions does Crosswords require and why/how are they used?

You might wonder why a simple word game is requesting some of the more exotic permissions. Here's why.

  • Your messages/read SMS or MMS; receive SMS: When play via SMS is enabled, Crosswords looks at every incoming SMS message to see if it is from Crosswords on another device. If it is, the message is removed so that the usual SMS app doesn't try to display it.
  • Your personal information/read contact data: When you are inviting someone to play a game via SMS and press the "Import contact" button Crosswords scans your contacts. And when you receive an invitation to play via SMS Crosswords tries to look up the name associated with the number that sent the invitation in order to display a more useful message.
  • Storage/modify/delete USB storage contents: Crosswords gives you the option of storing downloaded wordlists to External storage (your phone's SD card), and supports being installed there as well. Unless you use one of these options your External storage is not touched.
  • Services that cost you money/send SMS messages: When play via SMS is enabled and you start a game via SMS, the initial invitation and all moves will be transmitted as specially encoded SMS messages (instead of via your phone's cellular or wifi internet connection.) No SMS messages are sent unless you explicitly enable the feature and confirm that you have an unlimited texting plan.
  • System tools/prevent phone from sleeping: This is required to support the option, which is disabled by default, of leaving the screen on for up to 10 minutes while you're searching for a move.

What if I don't have an unlimited SMS/texting plan?

Go ahead and install Crosswords, but don't enable the SMS feature. That feature is off by default, and you can't turn it on without confirming that you have unlimited texting. Until you enable that feature Crosswords will not send any SMS messages.

What are the Services that can cost you money the Google Play installer warns me about?

Google is warning you that this version of Crosswords has the ability to send SMS messages, which can cost you money depending on your cellular plan. I won't actually send any unless you turn the feature on, and you won't do that unless you have unlimited texting, but Google can't know that and so they have to warn you.

(Starting with Android 6.0 [Marshmallow] Google allows you to grant individual permissions one by one to apps you install, so you will be able to say, for example, "Let this app access the internet but don't let it send SMS messages." Using this new model requires extensive changes and introduces lots of opportunities to crash the app, but I'm working on it.)

How does play via SMS work

Any Android app with the right permissions can get first crack at all SMS messages coming into your phone. So Crosswords encodes all its communication with other phones as special SMS messages that it then looks for and intercepts on the other side. That's why when you try to start a game with someone who does not have Crosswords installed he will see a strangely formatted message in her Messaging inbox.

Why might I want to play via SMS instead of the old way?

  1. It doesn't use your data plan as much -- a good thing if your data's limited and your texting isn't.
  2. Moves get to the other device faster.
  3. It uses less battery. (That's because making a network connection to check the relay for new moves takes more power than waiting for an SMS message -- which your phone is already doing.)
  4. It's easier to start a game -- because you already have your friends' phone numbers handy.

My phone says Crosswords is trying to send too many SMS messages. Wassup?

That's due to a bug (at least in my opinion) in the Ice Cream Sandwich and Jelly Bean versions of Android. They track how many SMS messages each app has sent, and as soon as one app has sent more than 100 in an hour you get asked to confirm EVERY SINGLE ONE that app sends. (Why they couldn't just get you to confirm the first, or remember that you've said it's ok, is beyond me.) Anyway, you have three choices: keep clicking OK; wait until the hour is up; or reboot your phone to reset the tracker.

Why doesn't play-via-SMS work on some KitKat phones?

Some background: Since the beginning of SMS in the '90s there have been two types of SMS messages an app can send, Text and Data. Text is meant for messages your friends will read, while data is meant for app-to-app communication. The latter is what Crosswords wants to use, except that Google's never bothered to fix problems with it on CDMA (Verizon and Sprint) phones. So what I and other Android developers have done instead is send specially coded text messages and then on the receiving side keep them from being seen by users.

Google's broken this in two ways. First, on KitKat they've disabled the feature that let us keep app-to-app text messages out of your inbox. And at the same time they've released a new version of Hangouts that, if you let it handle your SMS messages, prevents them from getting to the app they're meant for.

I'm still working on a fix for this. The easy move would be to drop support for the feature on CDMA phones until Google fixes sending of data messages -- but a lot of you are on Verizon and Sprint. So I'm hoping for a better idea.

What's this "relay" thing?

The relay is a server whose purpose is to allow copies of Crosswords to find each other and exchange messages over the internet (when they're not playing via SMS). It is not a game server in the traditional sense -- there's no game logic (e.g. move validation) there -- which is why it's possible to play via SMS (or Bluetooth, eventually) and bypass the relay altogether.)

Things the relay does not do: send you advertising, track or ask for personal data, or save any game data longer than needed to get it to the other device.

How do devices find each other on the relay?

When you and another player want to connect your phones to play a game, the problem is how they find each other. The most common solution is that you both register with a server, giving the server enough information that it can tell your friends (other registered users) that you're online and how to reach you. I wanted to keep things anonymous, so instead the Crosswords relay requires that you and your friend agree on the name of a "room". One of you connects and the room is created; then the other connects and is added to the room, which is now full. The relay creates a unique ID for the game and transmits it to both devices which use it to communicate from that point on.

What features are you working on now?

Lots of stuff. And I love to hear from people about what they'd like to see first.

  • Ability to replicate a disappeared player on somebody else's phone
  • Update BYOD to work with Android, and at the same time figure out how to share custom wordlists
  • Support custom board layouts and sharing of same
  • Figure out a good UI for populating a board and racks with an existing game so Crosswords can be used to solve puzzles (or cheat :-)
  • Add real support for challenging a move where a "Challenge" button is in the dialog for every reported turn
  • Support "duplicate"-style play where everybody has the same rack
  • Work with an artist or UI designer (any volunteers?) to make the game look more pro
  • ...

If there are other questions you want answered, please email me. I decide what's worth adding here based on what users tell me they want to see.