in com/android/server/pm/permission/DefaultPermissionGrantPolicy.java [321:855]
private void grantDefaultSystemHandlerPermissions(int userId) {
Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
final PackagesProvider locationPackagesProvider;
final PackagesProvider voiceInteractionPackagesProvider;
final PackagesProvider smsAppPackagesProvider;
final PackagesProvider dialerAppPackagesProvider;
final PackagesProvider simCallManagerPackagesProvider;
final PackagesProvider useOpenWifiAppPackagesProvider;
final SyncAdapterPackagesProvider syncAdapterPackagesProvider;
synchronized (mLock) {
locationPackagesProvider = mLocationPackagesProvider;
voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider;
smsAppPackagesProvider = mSmsAppPackagesProvider;
dialerAppPackagesProvider = mDialerAppPackagesProvider;
simCallManagerPackagesProvider = mSimCallManagerPackagesProvider;
useOpenWifiAppPackagesProvider = mUseOpenWifiAppPackagesProvider;
syncAdapterPackagesProvider = mSyncAdapterPackagesProvider;
}
String[] voiceInteractPackageNames = (voiceInteractionPackagesProvider != null)
? voiceInteractionPackagesProvider.getPackages(userId) : null;
String[] locationPackageNames = (locationPackagesProvider != null)
? locationPackagesProvider.getPackages(userId) : null;
String[] smsAppPackageNames = (smsAppPackagesProvider != null)
? smsAppPackagesProvider.getPackages(userId) : null;
String[] dialerAppPackageNames = (dialerAppPackagesProvider != null)
? dialerAppPackagesProvider.getPackages(userId) : null;
String[] simCallManagerPackageNames = (simCallManagerPackagesProvider != null)
? simCallManagerPackagesProvider.getPackages(userId) : null;
String[] useOpenWifiAppPackageNames = (useOpenWifiAppPackagesProvider != null)
? useOpenWifiAppPackagesProvider.getPackages(userId) : null;
String[] contactsSyncAdapterPackages = (syncAdapterPackagesProvider != null) ?
syncAdapterPackagesProvider.getPackages(ContactsContract.AUTHORITY, userId) : null;
String[] calendarSyncAdapterPackages = (syncAdapterPackagesProvider != null) ?
syncAdapterPackagesProvider.getPackages(CalendarContract.AUTHORITY, userId) : null;
// Installer
final String installerPackageName = mServiceInternal.getKnownPackageName(
PackageManagerInternal.PACKAGE_INSTALLER, userId);
PackageParser.Package installerPackage = getSystemPackage(installerPackageName);
if (installerPackage != null
&& doesPackageSupportRuntimePermissions(installerPackage)) {
grantRuntimePermissions(installerPackage, STORAGE_PERMISSIONS, true, userId);
}
// Verifier
final String verifierPackageName = mServiceInternal.getKnownPackageName(
PackageManagerInternal.PACKAGE_VERIFIER, userId);
PackageParser.Package verifierPackage = getSystemPackage(verifierPackageName);
if (verifierPackage != null
&& doesPackageSupportRuntimePermissions(verifierPackage)) {
grantRuntimePermissions(verifierPackage, STORAGE_PERMISSIONS, true, userId);
grantRuntimePermissions(verifierPackage, PHONE_PERMISSIONS, false, userId);
grantRuntimePermissions(verifierPackage, SMS_PERMISSIONS, false, userId);
}
// SetupWizard
final String setupWizardPackageName = mServiceInternal.getKnownPackageName(
PackageManagerInternal.PACKAGE_SETUP_WIZARD, userId);
PackageParser.Package setupPackage = getSystemPackage(setupWizardPackageName);
if (setupPackage != null
&& doesPackageSupportRuntimePermissions(setupPackage)) {
grantRuntimePermissions(setupPackage, PHONE_PERMISSIONS, userId);
grantRuntimePermissions(setupPackage, CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(setupPackage, LOCATION_PERMISSIONS, userId);
grantRuntimePermissions(setupPackage, CAMERA_PERMISSIONS, userId);
}
// Camera
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PackageParser.Package cameraPackage = getDefaultSystemHandlerActivityPackage(
cameraIntent, userId);
if (cameraPackage != null
&& doesPackageSupportRuntimePermissions(cameraPackage)) {
grantRuntimePermissions(cameraPackage, CAMERA_PERMISSIONS, userId);
grantRuntimePermissions(cameraPackage, MICROPHONE_PERMISSIONS, userId);
grantRuntimePermissions(cameraPackage, STORAGE_PERMISSIONS, userId);
}
// Media provider
PackageParser.Package mediaStorePackage = getDefaultProviderAuthorityPackage(
MediaStore.AUTHORITY, userId);
if (mediaStorePackage != null) {
grantRuntimePermissions(mediaStorePackage, STORAGE_PERMISSIONS, true, userId);
grantRuntimePermissions(mediaStorePackage, PHONE_PERMISSIONS, true, userId);
}
// Downloads provider
PackageParser.Package downloadsPackage = getDefaultProviderAuthorityPackage(
"downloads", userId);
if (downloadsPackage != null) {
grantRuntimePermissions(downloadsPackage, STORAGE_PERMISSIONS, true, userId);
}
// Downloads UI
Intent downloadsUiIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActivityPackage(
downloadsUiIntent, userId);
if (downloadsUiPackage != null
&& doesPackageSupportRuntimePermissions(downloadsUiPackage)) {
grantRuntimePermissions(downloadsUiPackage, STORAGE_PERMISSIONS, true, userId);
}
// Storage provider
PackageParser.Package storagePackage = getDefaultProviderAuthorityPackage(
"com.android.externalstorage.documents", userId);
if (storagePackage != null) {
grantRuntimePermissions(storagePackage, STORAGE_PERMISSIONS, true, userId);
}
// Container service
PackageParser.Package containerPackage = getSystemPackage(
PackageManagerService.DEFAULT_CONTAINER_PACKAGE);
if (containerPackage != null) {
grantRuntimePermissions(containerPackage, STORAGE_PERMISSIONS, true, userId);
}
// CertInstaller
Intent certInstallerIntent = new Intent(Credentials.INSTALL_ACTION);
PackageParser.Package certInstallerPackage = getDefaultSystemHandlerActivityPackage(
certInstallerIntent, userId);
if (certInstallerPackage != null
&& doesPackageSupportRuntimePermissions(certInstallerPackage)) {
grantRuntimePermissions(certInstallerPackage, STORAGE_PERMISSIONS, true, userId);
}
// Dialer
if (dialerAppPackageNames == null) {
Intent dialerIntent = new Intent(Intent.ACTION_DIAL);
PackageParser.Package dialerPackage = getDefaultSystemHandlerActivityPackage(
dialerIntent, userId);
if (dialerPackage != null) {
grantDefaultPermissionsToDefaultSystemDialerApp(dialerPackage, userId);
}
} else {
for (String dialerAppPackageName : dialerAppPackageNames) {
PackageParser.Package dialerPackage = getSystemPackage(dialerAppPackageName);
if (dialerPackage != null) {
grantDefaultPermissionsToDefaultSystemDialerApp(dialerPackage, userId);
}
}
}
// Sim call manager
if (simCallManagerPackageNames != null) {
for (String simCallManagerPackageName : simCallManagerPackageNames) {
PackageParser.Package simCallManagerPackage =
getSystemPackage(simCallManagerPackageName);
if (simCallManagerPackage != null) {
grantDefaultPermissionsToDefaultSimCallManager(simCallManagerPackage,
userId);
}
}
}
// Use Open Wifi
if (useOpenWifiAppPackageNames != null) {
for (String useOpenWifiPackageName : useOpenWifiAppPackageNames) {
PackageParser.Package useOpenWifiPackage =
getSystemPackage(useOpenWifiPackageName);
if (useOpenWifiPackage != null) {
grantDefaultPermissionsToDefaultSystemUseOpenWifiApp(useOpenWifiPackage,
userId);
}
}
}
// SMS
if (smsAppPackageNames == null) {
Intent smsIntent = new Intent(Intent.ACTION_MAIN);
smsIntent.addCategory(Intent.CATEGORY_APP_MESSAGING);
PackageParser.Package smsPackage = getDefaultSystemHandlerActivityPackage(
smsIntent, userId);
if (smsPackage != null) {
grantDefaultPermissionsToDefaultSystemSmsApp(smsPackage, userId);
}
} else {
for (String smsPackageName : smsAppPackageNames) {
PackageParser.Package smsPackage = getSystemPackage(smsPackageName);
if (smsPackage != null) {
grantDefaultPermissionsToDefaultSystemSmsApp(smsPackage, userId);
}
}
}
// Cell Broadcast Receiver
Intent cbrIntent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
PackageParser.Package cbrPackage =
getDefaultSystemHandlerActivityPackage(cbrIntent, userId);
if (cbrPackage != null && doesPackageSupportRuntimePermissions(cbrPackage)) {
grantRuntimePermissions(cbrPackage, SMS_PERMISSIONS, userId);
}
// Carrier Provisioning Service
Intent carrierProvIntent = new Intent(Intents.SMS_CARRIER_PROVISION_ACTION);
PackageParser.Package carrierProvPackage =
getDefaultSystemHandlerServicePackage(carrierProvIntent, userId);
if (carrierProvPackage != null
&& doesPackageSupportRuntimePermissions(carrierProvPackage)) {
grantRuntimePermissions(carrierProvPackage, SMS_PERMISSIONS, false, userId);
}
// Calendar
Intent calendarIntent = new Intent(Intent.ACTION_MAIN);
calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR);
PackageParser.Package calendarPackage = getDefaultSystemHandlerActivityPackage(
calendarIntent, userId);
if (calendarPackage != null
&& doesPackageSupportRuntimePermissions(calendarPackage)) {
grantRuntimePermissions(calendarPackage, CALENDAR_PERMISSIONS, userId);
grantRuntimePermissions(calendarPackage, CONTACTS_PERMISSIONS, userId);
}
// Calendar provider
PackageParser.Package calendarProviderPackage = getDefaultProviderAuthorityPackage(
CalendarContract.AUTHORITY, userId);
if (calendarProviderPackage != null) {
grantRuntimePermissions(calendarProviderPackage, CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(calendarProviderPackage, CALENDAR_PERMISSIONS,
true, userId);
grantRuntimePermissions(calendarProviderPackage, STORAGE_PERMISSIONS, userId);
}
// Calendar provider sync adapters
List<PackageParser.Package> calendarSyncAdapters = getHeadlessSyncAdapterPackages(
calendarSyncAdapterPackages, userId);
final int calendarSyncAdapterCount = calendarSyncAdapters.size();
for (int i = 0; i < calendarSyncAdapterCount; i++) {
PackageParser.Package calendarSyncAdapter = calendarSyncAdapters.get(i);
if (doesPackageSupportRuntimePermissions(calendarSyncAdapter)) {
grantRuntimePermissions(calendarSyncAdapter, CALENDAR_PERMISSIONS, userId);
}
}
// Contacts
Intent contactsIntent = new Intent(Intent.ACTION_MAIN);
contactsIntent.addCategory(Intent.CATEGORY_APP_CONTACTS);
PackageParser.Package contactsPackage = getDefaultSystemHandlerActivityPackage(
contactsIntent, userId);
if (contactsPackage != null
&& doesPackageSupportRuntimePermissions(contactsPackage)) {
grantRuntimePermissions(contactsPackage, CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(contactsPackage, PHONE_PERMISSIONS, userId);
}
// Contacts provider sync adapters
List<PackageParser.Package> contactsSyncAdapters = getHeadlessSyncAdapterPackages(
contactsSyncAdapterPackages, userId);
final int contactsSyncAdapterCount = contactsSyncAdapters.size();
for (int i = 0; i < contactsSyncAdapterCount; i++) {
PackageParser.Package contactsSyncAdapter = contactsSyncAdapters.get(i);
if (doesPackageSupportRuntimePermissions(contactsSyncAdapter)) {
grantRuntimePermissions(contactsSyncAdapter, CONTACTS_PERMISSIONS, userId);
}
}
// Contacts provider
PackageParser.Package contactsProviderPackage = getDefaultProviderAuthorityPackage(
ContactsContract.AUTHORITY, userId);
if (contactsProviderPackage != null) {
grantRuntimePermissions(contactsProviderPackage, CONTACTS_PERMISSIONS,
true, userId);
grantRuntimePermissions(contactsProviderPackage, PHONE_PERMISSIONS,
true, userId);
grantRuntimePermissions(contactsProviderPackage, STORAGE_PERMISSIONS, userId);
}
// Device provisioning
Intent deviceProvisionIntent = new Intent(
DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE);
PackageParser.Package deviceProvisionPackage =
getDefaultSystemHandlerActivityPackage(deviceProvisionIntent, userId);
if (deviceProvisionPackage != null
&& doesPackageSupportRuntimePermissions(deviceProvisionPackage)) {
grantRuntimePermissions(deviceProvisionPackage, CONTACTS_PERMISSIONS, userId);
}
// Maps
Intent mapsIntent = new Intent(Intent.ACTION_MAIN);
mapsIntent.addCategory(Intent.CATEGORY_APP_MAPS);
PackageParser.Package mapsPackage = getDefaultSystemHandlerActivityPackage(
mapsIntent, userId);
if (mapsPackage != null
&& doesPackageSupportRuntimePermissions(mapsPackage)) {
grantRuntimePermissions(mapsPackage, LOCATION_PERMISSIONS, userId);
}
// Gallery
Intent galleryIntent = new Intent(Intent.ACTION_MAIN);
galleryIntent.addCategory(Intent.CATEGORY_APP_GALLERY);
PackageParser.Package galleryPackage = getDefaultSystemHandlerActivityPackage(
galleryIntent, userId);
if (galleryPackage != null
&& doesPackageSupportRuntimePermissions(galleryPackage)) {
grantRuntimePermissions(galleryPackage, STORAGE_PERMISSIONS, userId);
}
// Email
Intent emailIntent = new Intent(Intent.ACTION_MAIN);
emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL);
PackageParser.Package emailPackage = getDefaultSystemHandlerActivityPackage(
emailIntent, userId);
if (emailPackage != null
&& doesPackageSupportRuntimePermissions(emailPackage)) {
grantRuntimePermissions(emailPackage, CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(emailPackage, CALENDAR_PERMISSIONS, userId);
}
// Browser
PackageParser.Package browserPackage = null;
String defaultBrowserPackage = mServiceInternal.getKnownPackageName(
PackageManagerInternal.PACKAGE_BROWSER, userId);
if (defaultBrowserPackage != null) {
browserPackage = getPackage(defaultBrowserPackage);
}
if (browserPackage == null) {
Intent browserIntent = new Intent(Intent.ACTION_MAIN);
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER);
browserPackage = getDefaultSystemHandlerActivityPackage(
browserIntent, userId);
}
if (browserPackage != null
&& doesPackageSupportRuntimePermissions(browserPackage)) {
grantRuntimePermissions(browserPackage, LOCATION_PERMISSIONS, userId);
}
// Voice interaction
if (voiceInteractPackageNames != null) {
for (String voiceInteractPackageName : voiceInteractPackageNames) {
PackageParser.Package voiceInteractPackage = getSystemPackage(
voiceInteractPackageName);
if (voiceInteractPackage != null
&& doesPackageSupportRuntimePermissions(voiceInteractPackage)) {
grantRuntimePermissions(voiceInteractPackage,
CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(voiceInteractPackage,
CALENDAR_PERMISSIONS, userId);
grantRuntimePermissions(voiceInteractPackage,
MICROPHONE_PERMISSIONS, userId);
grantRuntimePermissions(voiceInteractPackage,
PHONE_PERMISSIONS, userId);
grantRuntimePermissions(voiceInteractPackage,
SMS_PERMISSIONS, userId);
grantRuntimePermissions(voiceInteractPackage,
LOCATION_PERMISSIONS, userId);
}
}
}
if (ActivityManager.isLowRamDeviceStatic()) {
// Allow voice search on low-ram devices
Intent globalSearchIntent = new Intent("android.search.action.GLOBAL_SEARCH");
PackageParser.Package globalSearchPickerPackage =
getDefaultSystemHandlerActivityPackage(globalSearchIntent, userId);
if (globalSearchPickerPackage != null
&& doesPackageSupportRuntimePermissions(globalSearchPickerPackage)) {
grantRuntimePermissions(globalSearchPickerPackage,
MICROPHONE_PERMISSIONS, false, userId);
grantRuntimePermissions(globalSearchPickerPackage,
LOCATION_PERMISSIONS, false, userId);
}
}
// Voice recognition
Intent voiceRecoIntent = new Intent("android.speech.RecognitionService");
voiceRecoIntent.addCategory(Intent.CATEGORY_DEFAULT);
PackageParser.Package voiceRecoPackage = getDefaultSystemHandlerServicePackage(
voiceRecoIntent, userId);
if (voiceRecoPackage != null
&& doesPackageSupportRuntimePermissions(voiceRecoPackage)) {
grantRuntimePermissions(voiceRecoPackage, MICROPHONE_PERMISSIONS, userId);
}
// Location
if (locationPackageNames != null) {
for (String packageName : locationPackageNames) {
PackageParser.Package locationPackage = getSystemPackage(packageName);
if (locationPackage != null
&& doesPackageSupportRuntimePermissions(locationPackage)) {
grantRuntimePermissions(locationPackage, CONTACTS_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, CALENDAR_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, MICROPHONE_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, PHONE_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, SMS_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, LOCATION_PERMISSIONS,
true, userId);
grantRuntimePermissions(locationPackage, CAMERA_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, SENSORS_PERMISSIONS, userId);
grantRuntimePermissions(locationPackage, STORAGE_PERMISSIONS, userId);
}
}
}
// Music
Intent musicIntent = new Intent(Intent.ACTION_VIEW);
musicIntent.addCategory(Intent.CATEGORY_DEFAULT);
musicIntent.setDataAndType(Uri.fromFile(new File("foo.mp3")),
AUDIO_MIME_TYPE);
PackageParser.Package musicPackage = getDefaultSystemHandlerActivityPackage(
musicIntent, userId);
if (musicPackage != null
&& doesPackageSupportRuntimePermissions(musicPackage)) {
grantRuntimePermissions(musicPackage, STORAGE_PERMISSIONS, userId);
}
// Home
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
homeIntent.addCategory(Intent.CATEGORY_LAUNCHER_APP);
PackageParser.Package homePackage = getDefaultSystemHandlerActivityPackage(
homeIntent, userId);
if (homePackage != null
&& doesPackageSupportRuntimePermissions(homePackage)) {
grantRuntimePermissions(homePackage, LOCATION_PERMISSIONS, false, userId);
}
// Watches
if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) {
// Home application on watches
Intent wearHomeIntent = new Intent(Intent.ACTION_MAIN);
wearHomeIntent.addCategory(Intent.CATEGORY_HOME_MAIN);
PackageParser.Package wearHomePackage = getDefaultSystemHandlerActivityPackage(
wearHomeIntent, userId);
if (wearHomePackage != null
&& doesPackageSupportRuntimePermissions(wearHomePackage)) {
grantRuntimePermissions(wearHomePackage, CONTACTS_PERMISSIONS, false,
userId);
grantRuntimePermissions(wearHomePackage, PHONE_PERMISSIONS, true, userId);
grantRuntimePermissions(wearHomePackage, MICROPHONE_PERMISSIONS, false,
userId);
grantRuntimePermissions(wearHomePackage, LOCATION_PERMISSIONS, false,
userId);
}
// Fitness tracking on watches
Intent trackIntent = new Intent(ACTION_TRACK);
PackageParser.Package trackPackage = getDefaultSystemHandlerActivityPackage(
trackIntent, userId);
if (trackPackage != null
&& doesPackageSupportRuntimePermissions(trackPackage)) {
grantRuntimePermissions(trackPackage, SENSORS_PERMISSIONS, false, userId);
grantRuntimePermissions(trackPackage, LOCATION_PERMISSIONS, false, userId);
}
}
// Print Spooler
PackageParser.Package printSpoolerPackage = getSystemPackage(
PrintManager.PRINT_SPOOLER_PACKAGE_NAME);
if (printSpoolerPackage != null
&& doesPackageSupportRuntimePermissions(printSpoolerPackage)) {
grantRuntimePermissions(printSpoolerPackage, LOCATION_PERMISSIONS, true, userId);
}
// EmergencyInfo
Intent emergencyInfoIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE);
PackageParser.Package emergencyInfoPckg = getDefaultSystemHandlerActivityPackage(
emergencyInfoIntent, userId);
if (emergencyInfoPckg != null
&& doesPackageSupportRuntimePermissions(emergencyInfoPckg)) {
grantRuntimePermissions(emergencyInfoPckg, CONTACTS_PERMISSIONS, true, userId);
grantRuntimePermissions(emergencyInfoPckg, PHONE_PERMISSIONS, true, userId);
}
// NFC Tag viewer
Intent nfcTagIntent = new Intent(Intent.ACTION_VIEW);
nfcTagIntent.setType("vnd.android.cursor.item/ndef_msg");
PackageParser.Package nfcTagPkg = getDefaultSystemHandlerActivityPackage(
nfcTagIntent, userId);
if (nfcTagPkg != null
&& doesPackageSupportRuntimePermissions(nfcTagPkg)) {
grantRuntimePermissions(nfcTagPkg, CONTACTS_PERMISSIONS, false, userId);
grantRuntimePermissions(nfcTagPkg, PHONE_PERMISSIONS, false, userId);
}
// Storage Manager
Intent storageManagerIntent = new Intent(StorageManager.ACTION_MANAGE_STORAGE);
PackageParser.Package storageManagerPckg = getDefaultSystemHandlerActivityPackage(
storageManagerIntent, userId);
if (storageManagerPckg != null
&& doesPackageSupportRuntimePermissions(storageManagerPckg)) {
grantRuntimePermissions(storageManagerPckg, STORAGE_PERMISSIONS, true, userId);
}
// Companion devices
PackageParser.Package companionDeviceDiscoveryPackage = getSystemPackage(
CompanionDeviceManager.COMPANION_DEVICE_DISCOVERY_PACKAGE_NAME);
if (companionDeviceDiscoveryPackage != null
&& doesPackageSupportRuntimePermissions(companionDeviceDiscoveryPackage)) {
grantRuntimePermissions(companionDeviceDiscoveryPackage,
LOCATION_PERMISSIONS, true, userId);
}
// Ringtone Picker
Intent ringtonePickerIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
PackageParser.Package ringtonePickerPackage =
getDefaultSystemHandlerActivityPackage(ringtonePickerIntent, userId);
if (ringtonePickerPackage != null
&& doesPackageSupportRuntimePermissions(ringtonePickerPackage)) {
grantRuntimePermissions(ringtonePickerPackage,
STORAGE_PERMISSIONS, true, userId);
}
// TextClassifier Service
String textClassifierPackageName =
mContext.getPackageManager().getSystemTextClassifierPackageName();
if (!TextUtils.isEmpty(textClassifierPackageName)) {
PackageParser.Package textClassifierPackage =
getSystemPackage(textClassifierPackageName);
if (textClassifierPackage != null
&& doesPackageSupportRuntimePermissions(textClassifierPackage)) {
grantRuntimePermissions(textClassifierPackage, PHONE_PERMISSIONS, false, userId);
grantRuntimePermissions(textClassifierPackage, SMS_PERMISSIONS, false, userId);
grantRuntimePermissions(textClassifierPackage, CALENDAR_PERMISSIONS, false, userId);
grantRuntimePermissions(textClassifierPackage, LOCATION_PERMISSIONS, false, userId);
grantRuntimePermissions(textClassifierPackage, CONTACTS_PERMISSIONS, false, userId);
}
}
// There is no real "marker" interface to identify the shared storage backup, it is
// hardcoded in BackupManagerService.SHARED_BACKUP_AGENT_PACKAGE.
PackageParser.Package sharedStorageBackupPackage = getSystemPackage(
"com.android.sharedstoragebackup");
if (sharedStorageBackupPackage != null) {
grantRuntimePermissions(sharedStorageBackupPackage, STORAGE_PERMISSIONS, true, userId);
}
if (mPermissionGrantedCallback != null) {
mPermissionGrantedCallback.onDefaultRuntimePermissionsGranted(userId);
}
}