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