Unfortunately the android SDK doesn’t make it easy to find the list of function that each permission gives you access to, so we’ll need to work backwards from each function to confirm why we are using each permission. Here’s a start from memory that needs to end up on our wiki, and needs some more specific details.
Our permission list is a combination of the permissions used by SipDroid and WifiTether, the two application our source code was initially based on. Some may now be redundant and might be removed in future.
While this list may appear scary, the source code for our software is available if you wish to confirm what we are doing with these permissions. And we would encourage external auditing to look for security issues or unexpected leakage of personally identifiable information.
Our software should automatically start when the phone is turned on, if it was still running when you switched it off.
We can use the internal wifi controls to enable communications.
This permission is required for creating any network traffic.
When you first setup our software, we try to obtain your real phone number so it can be registered on the mesh.
During a call, you may use a headset.
We intercept all outgoing calls while our software is turned on to give you the option of reaching your contact via the mesh.
If you choose not to use our software, we need to place the call again.
For transmission to the person you are talking to.
Allow you to answer incoming calls, bypassing the normal screen unlock.
Changing the in call volume.
Read ringtone, volume and vibrate settings for incoming call notifications.
Notification of incoming calls.
Display the name of an incoming caller.
Insert incoming and outgoing call information.
Make sure we keep the phone awake for relaying packets.
Sipdroid has some experimental support for video calling, that probably doesn’t work. But we haven’t removed it yet.
Writing log files and storing some state between installs to speed up the development process.
We broadcast the state of adhoc wifi so our own UI and other applications can display that state.
If SMSDroid is installed on your phone, our software can be used to send messages. This required us to insert any incoming messages.