Meta tags:
description= This document provides guidance on how to minimize permission usage in Android applications to improve app quality and protect user privacy, by offering alternative approaches to common functionalities.;
keywords= Android, Permissions, Privacy, Security, App Quality, Location, Storage, Camera, Bluetooth, SMS, Phone Calls;
Headings (most frequently used words):
your, phone, and, app, automatically, enter, number, calls, permissions, permission, with, files, the, device, media, open, user, android, minimize, requests, stay, organized, collections, save, categorize, content, based, on, preferences, show, nearby, places, create, access, identify, that, running, an, instance, of, pair, over, bluetooth, payment, card, manage, text, messages, pause, when, is, interrupted, scan, barcodes, reset, unused, request, runtime, explain, why, needs, handle, denials, documents, take, photo, record, video, one, time, passcode, verify, filter, place, more, discover, devices, releases, documentation, downloads, support,
Text of the page (most frequently used words):
the (117), app (75), android (73), your (67), and (65), play (52), for (39), user (35), permissions (30), #permission (28), use (28), you (25), google (23), this (21), #access (21), api (19), more (19), with (19), that (19), declare (18), device (17), location (17), support (15), phone (15), libraries (15), privacy (14), get (13), design (13), users (13), instead (13), services (13), overview (13), all (12), devices (12), might (12), data (12), functionality (12), build (12), camera (11), media (11), using (11), apps (11), studio (10), files (10), wear (9), how (9), which (9), only (9), don (9), learn (9), number (9), sms (9), tools (9), games (9), experiences (9), documentation (8), cars (8), thumb (8), any (8), such (8), latest (8), guides (7), need (7), code (7), read (7), without (7), automatically (7), system (7), can (7), calls (7), from (7), enter (7), experience (7), quality (7), updates (7), compose (7), builder (7), other (6), samples (6), are (6), when (6), needs (6), request (6), powered (6), create (6), case (6), action (6), tablets (6), minimize (6), photo (6), created (6), picker (6), best (6), console (6), core (6), reference (5), developers (5), releases (5), chromeos (5), health (5), blog (5), security (5), information (5), down (5), content (5), guidance (5), help (5), runtime (5), their (5), results (5), declaring (5), time (5), verify (5), one (5), verification (5), work (5), storage (5), apis (5), programs (5), explore (5), phones (5), foldables (5), news (4), guidelines (4), platform (4), details (4), doesn (4), specific (4), workflow (4), barcode (4), requires (4), custom (4), lets (4), library (4), provide (4), allow (4), sensitive (4), another (4), message (4), grant (4), note (4), companion (4), instance (4), situation (4), following (4), precise (4), requests (4), plan (4), developer (4), sdk (4), index (4), delivery (4), monetization (4), jetpack (4), write (4), areas (4), excellent (4), glasses (4), form (4), world (4), started (4), manage (3), brand (3), firebase (3), studies (3), fitness (3), discover (3), enterprise (3), community (3), its (3), show (3), explain (3), provides (3), multiple (3), cases (3), scan (3), store (3), audio (3), focus (3), read_phone_state (3), call (3), intent (3), install (3), place (3), offer (3), passcode (3), retriever (3), directly (3), requesting (3), level (3), not (3), factor (3), identity (3), text (3), messages (3), needing (3), card (3), own (3), messaging (3), different (3), invoke (3), videos (3), document (3), require (3), consider (3), usage (3), button (3), alternatives (3), secure (3), stay (3), feature (3), together (3), projects (3), interfaces (3), gemini (3), technical (3), sandbox (3), preview (3), optimize (3), ide (3), adaptive (3), local (3), network (3), develop (3), our (3), development (3), 한국어 (2), 日本語 (2), ภาษาไทย (2), বাংলা (2), हिंदी (2), فارسی (2), العربيّة (2), עברית (2), русский (2), türkçe (2), tiếng (2), việt (2), português (2), brasil (2), polski (2), italiano (2), indonesia (2), français (2), español (2), américa (2), latina (2), deutsch (2), english (2), tips (2), license (2), join (2), report (2), bug (2), downloads (2), connect (2), linkedin (2), out (2), youtube (2), follow (2), understand (2), too (2), last (2), updated (2), 2026 (2), utc (2), page (2), described (2), trademarks (2), should (2), choose (2), handle (2), dialog (2), but (2), why (2), once (2), ways (2), reset (2), unused (2), default (2), scanning (2), barcodes (2), helps (2), less (2), likely (2), implement (2), event (2), about (2), pause (2), some (2), action_call (2), contact (2), unnecessary (2), filter (2), solution (2), either (2), token (2), situations (2), where (2), used (2), authentication (2), streamline (2), related (2), payment (2), access_fine_location (2), over (2), bluetooth (2), identifier (2), scoped (2), unique (2), know (2), running (2), useful (2), preferences (2), declares (2), manifest (2), granted (2), then (2), securityexception (2), record (2), pre (2), installed (2), take (2), pictures (2), framework (2), set (2), documents (2), file (2), open (2), has (2), these (2), select (2), photos (2), share (2), may (2), coarse (2), gracefully (2), degrade (2), those (2), estimate (2), address (2), approximate (2), nearby (2), each (2), must (2), contracts (2), handlers (2), perform (2), events (2), tos (2), product (2), categories (2), authors (2), marketing (2), bundles (2), resources (2), referrer (2), reviews (2), asset (2), dev (2), center (2), policies (2), vitals (2), integrity (2), fundamentals (2), better (2), tech (2), bench (2), gradle (2), plugin (2), command (2), line (2), performance (2), test (2), debug (2), connectivity (2), background (2), multidevice (2), fraud (2), prevention (2), accessibility (2), value (2), kotlin (2), multiplatform (2), testing (2), modularization (2), navigation (2), introduction (2), architecture (2), widgets (2), headsets (2), desktop (2), mobile (2), experimental (2), productivity (2), social (2), category (2), googlebook (2), training (2), hello (2), practices (2), special (2), verificationstate (2), onboardingnextactivity (2), classes (2), com (2), gms (2), contactkeys (2), e2eeselfkeyparcelable (2), e2eeselfkeylistparcelable (2), e2eecontactkeyparcelable (2), e2eecontactkeylistparcelable (2), e2eeaccountkeyinfo (2), e2eeaccountcontactkeyparcelable (2), contactinfoparcelable (2), key (2), verifier (2), essentials (2), designed (2), grow (2), real (2), step (2), features (2), browse (2), factors (2), subscribe, email, cookies, products, cloud, chrome, research, ndk, download, guide, large, screens, machine, learning, gaming, podcasts, source, check, androiddev, easy, easytounderstand, solved, problem, solvedmyproblem, otherup, missing, missingtheinformationineed, complicated, many, steps, toocomplicatedtoomanysteps, date, outofdate, issue, samplescodeissue, otherdown, subject, licenses, java, openjdk, registered, oracle, affiliates, implications, denying, before, after, they, denials, recommendations, displays, indicating, wants, puzzling, requestpermissions, evaluated, denied, state, complex, formats, kit, scans, returns, images, processed, includes, decode, preserve, makes, scanner, handler, runs, shifts, onaudiofocuschange, receives, configured, alarm, occurs, playback, until, regains, interrupted, rather, than, prevents, installing, application, call_phone, action_dial, ability, tapping, callscreeningservice, interruptions, spam, hint, efficient, sales, alternatively, order, securely, recommended, through, wide, range, compatible, aggregators, reliably, account, see, digital, credentials, targets, higher, generate, pass, service, send, createappspecificsmstoken, will, control, format, allowing, prompt, single, consent, read_sms, two, sent, let, offers, debit, credit, recognition, pairing, bluetooth_admin, access_coarse_locatiion, enhanced, transferring, pair, basic, functions, randomuuid, imei, fact, particular, have, playlists, wearable, identify, action_video_capture, video, action_image_capture, depending, compatibility, older, maxsdkversion, read_external_storage, common, example, already, interacts, grants, temporary, uri, associated, selected, attachments, profile, sensors, even, important, recognize, refuse, sure, scenarios, times, often, asking, postal, frequently, accuracy, access_coarse_location, given, moment, during, search, near, auto, filling, ecommerce, option, reduce, both, friction, reliance, broader, scope, showing, aware, restaurants, requirements, precision, length, most, rough, approximation, whereabouts, implementing, depends, options, right, approach, places, describes, several, fulfill, always, way, respect, decision, operations, also, supports, built, intents, chosen, pickers, circumstances, lower, fidelity, applicable, there, alternative, interrupts, flow, deny, addition, new, disclosure, collection, sharing, particularly, review, shares, part, protecting, recommend, high, safe, environment, improving, save, categorize, based, organized, collections, define, restrict, interactions, preserving, enums, broadcastconstants, constants, contactkey, onaccountcontactkeysupdatedlistener, e2eebasekeyparcelable, contactkeyclient, definition, protections, audit, safely, checklist, sign, detailed, manuals, references, specifications, integrate, confidence, upcoming, webinars, workshops, meetups, initiatives, teams, achieve, goals, quick, deep, dive, tutorials, smarter, faster, stories, spotlight, collaborative, bring, loop, behind, scenes, looks, evolving, publishing, promoting, managing, deliver, engage, monitize, publish, game, business, pipeline, docs, safeguard, against, threats, ensure, align, robust, testable, maintainable, logic, beautiful, interface, touch, throughout, year, give, feedback, prescriptive, opinionated, first, skip, main,
Text of the page (random words):
onaccountcontactkeysupdatedlistener classes contactinfoparcelable contactinfoparcelable builder contactkey e2eeaccountcontactkeyparcelable e2eeaccountcontactkeyparcelable builder e2eeaccountkeyinfo e2eeaccountkeyinfo builder e2eecontactkeylistparcelable e2eecontactkeylistparcelable builder e2eecontactkeyparcelable e2eecontactkeyparcelable builder e2eeselfkeylistparcelable e2eeselfkeylistparcelable builder e2eeselfkeyparcelable e2eeselfkeyparcelable builder com google android gms contactkeys constants overview classes broadcastconstants onboardingnextactivity companion verificationstate companion enums onboardingnextactivity verificationstate permissions overview declare app permissions request app permissions request runtime permissions request special permissions privacy preserving alternatives location button explain access to more sensitive information app permissions best practices permissions used only in default handlers restrict interactions with other apps define custom permissions build ai experiences get started get started hello world developer verification adaptive apps compose for ui ai powered ide training monetization with play ️ optimize by form factor phones tablets foldables android for cars android tv android xr googlebook chromeos wear os build by category games camera media social messaging health fitness productivity enterprise apps get the latest latest updates experimental updates android studio preview jetpack compose libraries wear os releases privacy sandbox ️ excellent experiences learn more ui design design for android mobile desktop experiences xr headsets xr glasses ai glasses widgets wear os android tv android for cars architecture introduction libraries navigation modularization testing kotlin multiplatform quality overview core value user experience accessibility technical quality excellent experiences security overview privacy permissions identity fraud prevention gemini in android studio learn more get android studio core areas samples multidevice support user interfaces background work data and files connectivity all core areas ️ tools and workflow write and debug code build projects test your app performance command line tools gradle plugin api android bench device tech phones tablets foldables chromeos android for cars android tv android xr wear os android health better together all devices ️ libraries android platform jetpack libraries compose libraries google play services ️ google play sdk index ️ play console go to play console learn more ️ fundamentals play monetization play integrity android vitals play policies play programs ️ games dev center overview play asset delivery play games services play games on pc level up guidelines all play guides ️ libraries play feature delivery play in app updates play in app reviews play install referrer google play services ️ google play sdk index ️ all play libraries ️ tools resources android app bundles brand marketing play console apis ️ the android developer s blog read the latest explore the authors explore categories product news community how tos case studies events programs documentation android developers design plan security privacy guides minimize your permission requests stay organized with collections save and categorize content based on your preferences as part of improving app quality and protecting user privacy we recommend you minimize the permissions usage in your apps this helps users discover and use high quality apps that provide a safe and secure user environment requesting permissions from users interrupts the user flow and users can deny your request in addition each time you declare a new permission you must review how your app requests and shares user data some particularly sensitive permissions and apis require you to provide in app disclosure of your data access collection use and sharing there are multiple alternative ways to minimize permission usage use lower fidelity alternatives for user data permission access where applicable such as requesting coarse location data instead of precise when it is unnecessary use pickers and permission alternatives which grant access to sensitive permissions in scoped circumstances such as the photo picker contact picker and location button call apis which allow your app to perform the chosen functionality without declaring permissions invoke specific intents or event handlers to perform functionality instead of declaring permissions the system provides built in contracts for different file operations and also supports custom contracts if you must declare a permission always respect the user s decision and provide a way to gracefully degrade your app s experience this page describes several use cases that your app can fulfill without declaring the need for any permissions show nearby places your app might need to know the user s approximate location this is useful for showing location aware information such as nearby restaurants each location use case has its own unique set of requirements for precision and length of access with most only needing a rough approximation of the user s whereabouts if you re implementing functionality in your app that depends on user location consider the following options to help you select the right access approach if your app functionality requires precise location but only at a given moment during app usage such as search near me or auto filling an address for ecommerce using the location button is likely the best option for you to reduce both user friction and reliance on the broader scope permission if your app frequently needs location declare the access_coarse_location permission the permission provides a device location estimate from location services as described in the documentation about approximate location accuracy if your app needs location less often or only once consider asking the user to enter an address or a postal code instead other use cases may require a more precise estimate of a device s location those situations are the only times when it s ok to declare the access_fine_location permission note even if your app functionality requires precise location it is important to recognize that users may refuse to grant access or only grant coarse location permission so be sure to consider how best to gracefully degrade the app experience in those scenarios create and access files android lets you create and access files without needing to declare any permissions related to storage or sensors open media files your app might allow users to choose from their photos and videos such as for message attachments or profile pictures to support this functionality use the photo picker the photo picker doesn t require any runtime permissions to use when a user interacts with the photo picker to select photos or videos to share with your app the system grants temporary read access to the uri associated with the selected media files if your app needs to access media files without using the photo picker you don t need to declare any storage permissions if you access media files that your app created your app already has access to these files in the media store if you access media files that other apps created use the storage access framework open documents your app might show documents that the user created either in your app or in another app a common example is a text file in this situation declare the read_external_storage only for compatibility with older devices set the android maxsdkversion to 28 depending on which app created the document do one of the following if the user created the document in your app access it directly if the user created the document in another app use the storage access framework take a photo users might take pictures in your app using the pre installed system camera app in this situation don t declare the camera permission instead invoke the action_image_capture intent action note if your app declares manifest permission camera permission and is not granted then the action results in a securityexception record a video users might record videos in your app using the pre installed system camera app in this situation don t declare the camera permission instead invoke the action_video_capture intent action note if your app declares manifest permission camera permission and is not granted then the action results in a securityexception identify the device that s running an instance of your app a particular instance of your app might need to know which device it s running on this is useful for apps that have device specific preferences or messaging such as different playlists for tv devices and wearable devices in this situation don t access the device s imei directly in fact as of android 10 you can t do so instead do one of the following get a unique device identifier for your app s instance using the instance id library create your own identifier that s scoped to your app s storage use basic system functions such as randomuuid pair with a device over bluetooth your app might offer an enhanced experience by transferring data to another device over bluetooth to support this functionality don t declare the access_fine_location access_coarse_locatiion or bluetooth_admin permissions instead use companion device pairing automatically enter a payment card number google play services offers a library that lets you automatically enter a payment card number instead of declaring the camera permission you can use the debit and credit card recognition library manage phone calls and text messages android and google play services offer libraries that let you manage phone calls and text messages without needing to declare any permissions related to phone calls or sms messages enter a one time passcode automatically to streamline a two factor authentication workflow your app might automatically enter the one time passcode that is sent to a user s device to verify their identity to support this functionality on devices powered by google play services don t declare the read_sms permission instead use the sms retriever api note the sms retriever api will not work in situations where your app doesn t control the format of the sms message used for authentication in this case use the sms user consent api to streamline sms verification by allowing the app to prompt the user to grant access to the content of only a single sms message on other devices if your app targets android 8 0 api level 26 or higher generate an app specific token using createappspecificsmstoken pass this token to another app or service that can send a verification sms message verify a user s phone number in order to allow your app to securely verify a user s phone number the recommended solution is the digital credentials api using this api either directly or through a wide range of compatible aggregators lets you reliably verify user account information without requesting sensitive device permissions for a firebase solution see firebase phone number verification alternatively you can verify a user s phone number using a one time passcode using the sms retriever api enter the user s phone number automatically to provide more efficient sales or support your app might allow the user to enter their device s phone number automatically to support this functionality on devices powered by google play services don t declare the read_phone_state permission instead use the phone number hint library filter phone calls to minimize unnecessary interruptions for the user your app might filter phone calls for spam to support this functionality don t declare the read_phone_state permission instead use the callscreeningservice api place phone calls your app might offer the ability to place a phone call by tapping a contact s information to support this functionality use the action_dial intent action rather than the action_call action action_call requires the install time permission call_phone which prevents devices that can t place calls such as some tablets from installing your application pause media when your app is interrupted if the user receives a phone call or if a user configured alarm occurs your app should pause any media playback until your app regains audio focus to support this functionality don t declare the read_phone_state permission instead implement the onaudiofocuschange event handler which runs automatically when the system shifts its audio focus learn more about how to implement audio focus scan barcodes android includes support for the google code scanner api powered by google play services which lets you decode barcodes without declaring any camera permissions this api helps preserve user privacy and makes it less likely that you need to create a custom ui for your barcode scanning use case the api scans the barcode and only returns the scan results to your app images are processed on device and google doesn t store any data or scan results if your app needs to support complex use cases or barcode formats or if it requires a custom ui use the ml kit barcode scanning api instead reset unused permissions android provides multiple ways to reset unused runtime permissions to their default denied state read design guidance request runtime permissions once you ve evaluated that your app needs to declare and request runtime permissions follow a specific workflow to do so read design guidance explain why your app needs permissions using requestpermissions displays a dialog indicating which permissions your app wants to use but doesn t explain why which might be puzzling to the user for more details and recommendations on how and when to show this dialog read design guidance handle permission denials your app should help users understand the implications of denying a permission before and after they choose to do so read design guidance content and code samples on this page are subject to the licenses described in the content license java and openjdk are trademarks or registered trademarks of oracle and or its affiliates last updated 2026 08 19 utc easy to understand easytounderstand thumb up solved my problem solvedmyproblem thumb up other otherup thumb up missing the information i need missingtheinformationineed thumb down too complicated too many steps toocomplicatedtoomanysteps thumb down out of date outofdate thumb down samples code issue samplescodeissue thumb down other otherdown thumb down last updated 2026 08 19 utc x follow androiddev on x youtube check out android developers on youtube linkedin connect with the android developers community on linkedin more android android android for enterprise security source news blog podcasts discover gaming machine learning health fitness camera media privacy 5g android devices large screens wear os chromeos devices android for cars android tv releases android 17 android 16 android 15 android 14 android 13 android 12 android 11 documentation and downloads android studio guide developers guides api reference download st...
|