views:

25

answers:

3

I'm looking for suggestions for ways to share Android app data between phones running the same app. For example, lets say I have an app that stores a database of book reviews. If person A has a book review that person B doesn't have, what are the options for getting that information from person A's phone to person B's phone?

Currently, I'm aware of the following options:

- Upload data from person A's phone to a server, then download data from server to Person B's phone.
- Write code to have the phones sync up using bluetooth
- Write code to send SMS messages

I'm wondering if there are any more options besides these, and if there's actually a best-practice for accomplishing this?

Ideally, I want the users to simply click a button in the app to make the sharing take place, so I don't want to go down the bluetooth route because that requires the user to do a bit of setup (or assumes they already have set things up in the form of bluetooth settings).

Since the data can be of variable length and potentially large, I believe that would rule out text messaging.

As far as the server route goes, from what I understand this seems to be an ok way of doing things, but my problem is that I have no experience with having users potentially sign in to a server and then uploading data. I don't know of the cost concerns (if any), or of potential security concerns (allowing just anyone to upload data, I'm not sure if I would have to take steps to ensure someone couldn't bypass the app and upload malicious data).

So, can you guys give me suggestions and point me in the right direction? Thanks.

A: 

I'm wondering if there are any more options besides these

You could try generating a QR code and scanning it on the other phone. Beyond that, I think you have it mostly covered.

and if there's actually a best-practice for accomplishing this?

That is impossible to answer in the abstract.

CommonsWare
Thanks CommonsWare, I appreciate the feedback.
Michael
A: 

Keep the database server side and interface with it via a web service

Falmarri
Thanks Falmarri, I'll look into it.
Michael
This is the prefered method of doing things depending on what you're doing. Device-device connecting, while possible, is not easy without an intermediary server. It's actually quite easy. You have your database on your server, and just build a very simple web API to connect to it in PHP or something similar
Falmarri
A: 

I too am looking for a solution to this very problem. I'll throw it out there that a fourth, or rather extension of your first option, is to use the Cloud to Device Messaging Framework, though it still requires (as best I can tell) having your own server, though I suppose you wouldn't need to store the database server-side longer than it takes to send the message, provided you keep it under 1024b (or whatever the actual size is).

I don't believe there is a convenient way to monitor/send email in the background. If I could have my app monitor email messages looking for a key subject, then parsing the body, I could probably accomplish what I'm looking for using email as the transport.

The problem with maintaining a server, is that you probably would need to build in a subscription fee to your app to cover the costs of maintaining a server, as one time sales may not be able to cover the ongoing expense.

wct097