tags:

views:

60

answers:

3

I am starting an application for child monitoring. This would involve mainly the logging of the SMS messages sent and received and logging other activities that may be of interest to the parents. It will also be nice to have something like access control lists for these, too.

Now, as far as I know:

  • It is not possible to make an app "not uninstallable".
  • It is not possible to prompt for a password to uninstall an app.
  • It is not possible to assure that your app is "always" running even if it's getting killed with something like Task Killer, although I think you can respawn the application at given time intervals.

So, any ideas on how to overcome these problems?

+1  A: 

What you said is true.

Also remember that applications like Task Killer have some sort of blacklist/ignore list so re spawning your app might not make it work.

PS: Without a rooted phone, there is no way you can save your app from a geek kid :)

Macarse
+3  A: 

There is no way to work around these problems directly without creating your own build of the Android OS. Android always assumes the current user is the owner of the phone and should always be allowed to do whatever they need to do.

It's easy to see why the functionality you need isn't available if you replace "child monitoring" with "malicious data logging" in your question; if Android allowed an app to prevent the user from removing it, it would clearly be open to abuse.

The only thing I can think to do is to have your keep a log of when it is running. This would allow a parent to seen when the app had been running when they viewed the log of the collected data. So if the child had disabled the app the parent would know, but they wouldn't know what had been missed. Although you'd had to be able differentiate between when the phone was switched off and when the app just wasn't running which might not be straightforward.

Dave Webb
+1  A: 

I was thinking about writing a similar app and considered the same exact scenario. "What if the kid uninstalls the app?"

The only solution I was able to come up with was to have the app periodically ping a server with the a unique ID. Affectively having the app "Check in" with the server a few times a day. Kind of like when prisoner goes on parole. The app is the prisoner and the server is the Parole officer :)

If the app misses a checkin you could treat this as a potential uninstall. However, this could be caused by a lack of network connectivity. I'm sure you could come up with some interesting ways to flag and treat missed checkins. Maybe you could have the app send an SMS checkin or something instead of over HTTP. Then you wouldn't have to depend on Network connectivity.

Once you figure out how to translate missed checkins to an uninstall, you could shoot out an email to the interested party (i.e. the kids parent).

With this option in place, the parent can then have a "Conversation" with their kid before giving them the phone. Something along the lines of: - "This phone's got parental controls on it. Yes, you do have the ability to uninstall them. However, if you uninstall them I'll know about it and I'll take the phone away."

I think there's definitely a market for this. Need some type of web-interface/dashboard for that parents can log into for monitoring too.

Hope this helps & best of luck.

Cheers!

James