Cosc 5/4730

advertisement
Cosc 5/4730
Permissions
Permissions
Note that all of start with android.premission.
• Location:
–
•
About “cell” Network
–
•
BLUETOOTH, BLUETOOTH_ADMIN,
Accounts: (AccountManager)
–
•
BIND_INPUT_METHOD (InputMethodService), BIND_REMOTEVIEWS (RemoteViewsService),
BIND_TEXT_SERVICE (TextService like spellcheckerservice), BIND_VPN_SERVICE (VpnService),
BIND_WALLPAPER (WallpaperService)
Bluetooth
–
•
BATTERY_STATS, CALL_PHONE, CAMERA, MODIFY_AUDIO_SETTINGS, NFC, READ_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE, RECEIVE_BOOT_OCMPLETED, RECORD_AUDIO, VIBRATE, WAKE_LOCK (prevent
screen from dimming and lock),
Varying services
–
•
ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE, CHANGE_NETWORK_STATE,
CHANGE_WIFI_MULITCAST_STATE, CHANGE_WIFI_STATE, INTERNET (needed to use networking)
Hardware:
–
•
ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_LOCATION_EXTRA_COMMANDS,
ACCESS_MOCK_LOCATION
GET_ACCOUNTS, MANAGE_ACCOUNTS, USER_CREDENTIALS
Text messaging
–
READ_SMS, RECEIVE_SMS, RECEIVE_MMS, SEND_SMS, WRITE_SMS
Permissions (2)
• User “information”:
– READ_CALENDAR, WRITE_CALENDAR, READ_CONTACTS, WRITE_CONTACTS,
READ_USER_DICTIONARY, WRTIE_USER_DICTIONARY
– READ_HISTORY_BOOKMARKS, WRITE_HISTORY_BOOKMARKS,
– READ_SOCIAL_STREAM, SUBSCRIBE_FEEDS_READ, SUBSCRIBE_FEEDS_WRITE,
WRITE_SOCAIL_STREAM,
– READ_SYNC_SETTINGS, READ_SYNC_STATS, WRITE_SYNC_SETTINGS,
– SET_ALARM, USE_SIP, WRITE_SETTINGS (system settings),
RECEIVE_WAP_PUSH, SET_TIME_ZONE
– SET_WALLPAPER, SET_WALLPAPER_HINTS
– READ_PROFILE and WRITE_PROFILE (user’s personal profile data)
• Phone calls:
– READ_PHONE_STATE, READ_CALL_LOG, WRITE_CALL_LOG,
PROCESS_OUTGOING_CALLS
• Running applications (and recent apps too).
– GET_TASKS, REORDER_TASKS
Other Misc Permissions
• ADD_VOICEMAIL
– Added in API level 14, app must have access to a
voicemail server.
– Constant Value:
"com.android.voicemail.permission.ADD_VOICEMAIL"
• DISABLE_KEYGUARD, EXPAND_STATUS_BAR
• FLASHLIGHT, GET_PACKAGE_SIZE
• KILL_BACKGROUND_PROCESSES
– Added in API level 8
– Allows an application to call
killBackgroundProcesses(String)
Other permissions.
• I skipped over all the “system” permissions.
– Says, “Not for use by third-party applications.” in
the documentation.
• You app must be a system level app, which
you can’t do without rooting your phone or
becoming a vendor, like say Motorola.
– http://stackoverflow.com/questions/14256687/ho
w-to-make-my-application-system
Calendar Example
• Once a calendar is connected to the device
• You can use the following example from
google to read/write to the calendar
– Uses the Calendar Provider
• http://developer.android.com/guide/topics/pr
oviders/calendar-provider.html
Contacts Example
• Same with contacts
• http://developer.android.com/guide/topics/pr
oviders/contacts-provider.html
User Dictionary
• Android use the user dictionary for the
example in the “content provider basics”
example.
• http://developer.android.com/guide/topics/pr
oviders/content-provider-basics.html
AccountManager
• Provides a centralized registry of the user
online accounts
– Example: Facebook, dropbox, Evernote, etc…
– There are some examples of how to use and
create your “account” for your online service.
• http://www.finalconcept.com.au/article/view/androidaccount-manager-step-by-step
• http://developer.android.com/reference/android/accou
nts/AccountManager.html
Incoming/outgoing phone calls
• Detectcalls app in PremissionDemo.zip
• Uses: PROCESS_OUTGOING_CALLS and
READ_PHONE_STATE
• The example uses two Broadcast Receivers
– You can do it in one, but split for the example.
– Able to get the phone number and the information.
– http://androidlabs.org/short-experiments/broadcastreceivers/process-outgoing-calls/
• This example also shows you have to change the incoming phone
number!
– http://code.google.com/p/krvarma-androidsamples/source/browse/trunk/DetectCalls/?r=37
Incoming/outgoing phone calls (2)
• You can block outgoing phone calls
– You use: setResultData(null);
– That will stop the outbound call!
• http://stackoverflow.com/questions/599443/hang-upoutgoing-call-in-android
– You can not drop/ignore incoming calls thought.
Requires the MODIFY_PHONE_STATE permission,
which is a system level permission.
• http://stackoverflow.com/questions/15012082/rejectingincoming-call-in-android
• http://androidsourcecode.blogspot.in/2010/10/blockingincoming-call-android.html
Task lists
• RunningApp in the Demo shows how to get the
Running Applications.
– It’s pretty simple.
– Get the ActivityManager from the service
– You can get RunningServices, RunningAppProcesses,
RunningTasks, and RecentTasks.
• My example will list the package name for each one in
the list.
• Reference:
http://stackoverflow.com/questions/5446565/androidhow-do-i-check-if-activity-is-running
Reorder Tasks(2)
• While facebook, use the reorder_tasks
permission, I can’t find a single example for it.
• What I did find an interesting article on how
all the activities (tasks) work on the back to
front of the stack.
– And managing how your activities are launched
with the launch modes.
WallPaper
• Get the intance of the wallpaper manager.
• Then use setBitmap, setResource, or
setStream methods to change the wallpaper
• The example (setwallpaper) is very simple and
uses a wallpaper in the resource directory.
Read/Write profile
• In JellyBean (Api 14+) you can have several
user profiles.
– And we have methods to read and write these
profiles.
– It’s handled through the Contracts, so you will
need at least READ_CONTACTS permission as well
and READ_PROFILE and WRITE_PROFILE
Read/Write profile
• The profile is handled with a ContentProvider.
• So to get the entire profile (I think every
profile) you need the following query:
Cursor c = getContentResolver().query(
ContactsContract.Profile.CONTENT_URI, null,
null, null, null);
Read profile example
• The readPofile project reads all the profiles on
the device and displays the information to the
screen, using the query before.
• Remember the device must be 14+ to use this
one.
• My example is heavy modified, but based on
http://androidcodelabs.appspot.com/resources/tutorials/conta
ctsprovider/ex1.html
Q&A
Download