Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ LOCAL_SRC_FILES += \ core/java/android/content/pm/IPackageManager.aidl \ core/java/android/content/pm/IPackageMoveObserver.aidl \ core/java/android/content/pm/IPackageStatsObserver.aidl \ core/java/android/content/pm/IPackagesProvider.aidl \ core/java/android/content/pm/IOnPermissionsChangeListener.aidl \ core/java/android/database/IContentObserver.aidl \ core/java/android/hardware/ICameraService.aidl \ Loading core/java/android/content/pm/IPackageManager.aidl +3 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.pm.IPackageDeleteObserver2; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.IPackagesProvider; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.InstrumentationInfo; Loading Loading @@ -503,7 +504,7 @@ interface IPackageManager { void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissions(int userId); void setCarrierAppPackagesProvider(in IPackagesProvider provider); int getMountExternalMode(int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); } core/java/android/content/pm/IPackagesProvider.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; /** {@hide} */ interface IPackagesProvider { String[] getPackages(int userId); } core/java/android/content/pm/PackageManagerInternal.java +0 −26 Original line number Diff line number Diff line Loading @@ -55,30 +55,4 @@ public abstract class PackageManagerInternal { * @param provider The packages provider. */ public abstract void setVoiceInteractionPackagesProvider(PackagesProvider provider); /** * Sets the SMS packages provider. * @param provider The packages provider. */ public abstract void setSmsAppPackagesProvider(PackagesProvider provider); /** * Sets the dialer packages provider. * @param provider The packages provider. */ public abstract void setDialerAppPackagesProvider(PackagesProvider provider); /** * Requests granting of the default permissions to the current default SMS app. * @param packageName The default SMS package name. * @param userId The user for which to grant the permissions. */ public abstract void grantDefaultPermissionsToDefaultSmsApp(String packageName, int userId); /** * Requests granting of the default permissions to the current default dialer app. * @param packageName The default dialer package name. * @param userId The user for which to grant the permissions. */ public abstract void grantDefaultPermissionsToDefaultDialerApp(String packageName, int userId); } services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +54 −120 Original line number Diff line number Diff line Loading @@ -135,8 +135,7 @@ final class DefaultPermissionGrantPolicy { private PackagesProvider mImePackagesProvider; private PackagesProvider mLocationPackagesProvider; private PackagesProvider mVoiceInteractionPackagesProvider; private PackagesProvider mSmsAppPackagesProvider; private PackagesProvider mDialerAppPackagesProvider; private PackagesProvider mCarrierAppPackagesProvider; public DefaultPermissionGrantPolicy(PackageManagerService service) { mService = service; Loading @@ -154,12 +153,8 @@ final class DefaultPermissionGrantPolicy { mVoiceInteractionPackagesProvider = provider; } public void setSmsAppPackagesProviderLPw(PackagesProvider provider) { mSmsAppPackagesProvider = provider; } public void setDialerAppPackagesProviderLPw(PackagesProvider provider) { mDialerAppPackagesProvider = provider; public void setCarrierAppPackagesProviderLPw(PackagesProvider provider) { mCarrierAppPackagesProvider = provider; } public void grantDefaultPermissions(int userId) { Loading @@ -168,7 +163,7 @@ final class DefaultPermissionGrantPolicy { } private void grantPermissionsToSysComponentsAndPrivApps(int userId) { Log.i(TAG, "Granting permissions to platform components for user" + userId); Log.i(TAG, "Granting permissions to platform components"); synchronized (mService.mPackages) { for (PackageParser.Package pkg : mService.mPackages.values()) { Loading Loading @@ -200,20 +195,18 @@ final class DefaultPermissionGrantPolicy { } private void grantDefaultSystemHandlerPermissions(int userId) { Log.i(TAG, "Granting permissions to default platform handlers for user:" + userId); Log.i(TAG, "Granting permissions to default platform handlers"); final PackagesProvider imePackagesProvider; final PackagesProvider locationPackagesProvider; final PackagesProvider voiceInteractionPackagesProvider; final PackagesProvider smsAppPackagesProvider; final PackagesProvider dialerAppPackagesProvider; final PackagesProvider carrierAppPackagesProvider; synchronized (mService.mPackages) { imePackagesProvider = mImePackagesProvider; locationPackagesProvider = mLocationPackagesProvider; voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider; smsAppPackagesProvider = mSmsAppPackagesProvider; dialerAppPackagesProvider = mDialerAppPackagesProvider; carrierAppPackagesProvider = mCarrierAppPackagesProvider; } String[] imePackageNames = (imePackagesProvider != null) Loading @@ -222,10 +215,8 @@ final class DefaultPermissionGrantPolicy { ? 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[] carrierAppPackageNames = (carrierAppPackagesProvider != null) ? carrierAppPackagesProvider.getPackages(userId) : null; synchronized (mService.mPackages) { // Installers Loading Loading @@ -257,7 +248,7 @@ final class DefaultPermissionGrantPolicy { // SetupWizard Intent setupIntent = new Intent(Intent.ACTION_MAIN); setupIntent.addCategory(Intent.CATEGORY_HOME); PackageParser.Package setupPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package setupPackage = getDefaultSystemHandlerActvityPackageLPr( setupIntent, userId); if (setupPackage != null && doesPackageSupportRuntimePermissions(setupPackage)) { Loading @@ -266,10 +257,10 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(setupPackage, SETTINGS_PERMISSIONS, userId); } // Dialer if (dialerAppPackageNames != null) { for (String dialerAppPackageName : dialerAppPackageNames) { PackageParser.Package dialerPackage = getPackageLPr(dialerAppPackageName); // Phone Intent dialerIntent = new Intent(Intent.ACTION_DIAL); PackageParser.Package dialerPackage = getDefaultSystemHandlerActvityPackageLPr( dialerIntent, userId); if (dialerPackage != null && doesPackageSupportRuntimePermissions(dialerPackage)) { grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId); Loading @@ -277,12 +268,10 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId); } } } // Camera Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); PackageParser.Package cameraPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package cameraPackage = getDefaultSystemHandlerActvityPackageLPr( cameraIntent, userId); if (cameraPackage != null && doesPackageSupportRuntimePermissions(cameraPackage)) { Loading @@ -307,30 +296,29 @@ final class DefaultPermissionGrantPolicy { // Downloads UI Intent downloadsUiIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActvityPackageLPr( downloadsUiIntent, userId); if (downloadsUiPackage != null && doesPackageSupportRuntimePermissions(downloadsUiPackage)) { grantRuntimePermissionsLPw(downloadsUiPackage, STORAGE_PERMISSIONS, userId); } // SMS if (smsAppPackageNames != null) { for (String smsPackageName : smsAppPackageNames) { PackageParser.Package smsPackage = getPackageLPr(smsPackageName); if (smsPackage != null && doesPackageSupportRuntimePermissions(smsPackage)) { grantRuntimePermissionsLPw(smsPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, SMS_PERMISSIONS, userId); } } // Messaging Intent messagingIntent = new Intent(Intent.ACTION_MAIN); messagingIntent.addCategory(Intent.CATEGORY_APP_MESSAGING); PackageParser.Package messagingPackage = getDefaultSystemHandlerActvityPackageLPr( messagingIntent, userId); if (messagingPackage != null && doesPackageSupportRuntimePermissions(messagingPackage)) { grantRuntimePermissionsLPw(messagingPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(messagingPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(messagingPackage, SMS_PERMISSIONS, userId); } // Calendar Intent calendarIntent = new Intent(Intent.ACTION_MAIN); calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR); PackageParser.Package calendarPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package calendarPackage = getDefaultSystemHandlerActvityPackageLPr( calendarIntent, userId); if (calendarPackage != null && doesPackageSupportRuntimePermissions(calendarPackage)) { Loading @@ -341,7 +329,7 @@ final class DefaultPermissionGrantPolicy { // Contacts Intent contactsIntent = new Intent(Intent.ACTION_MAIN); contactsIntent.addCategory(Intent.CATEGORY_APP_CONTACTS); PackageParser.Package contactsPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package contactsPackage = getDefaultSystemHandlerActvityPackageLPr( contactsIntent, userId); if (contactsPackage != null && doesPackageSupportRuntimePermissions(contactsPackage)) { Loading @@ -352,7 +340,7 @@ final class DefaultPermissionGrantPolicy { // Maps Intent mapsIntent = new Intent(Intent.ACTION_MAIN); mapsIntent.addCategory(Intent.CATEGORY_APP_MAPS); PackageParser.Package mapsPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package mapsPackage = getDefaultSystemHandlerActvityPackageLPr( mapsIntent, userId); if (mapsPackage != null && doesPackageSupportRuntimePermissions(mapsPackage)) { Loading @@ -362,7 +350,7 @@ final class DefaultPermissionGrantPolicy { // Email Intent emailIntent = new Intent(Intent.ACTION_MAIN); emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL); PackageParser.Package emailPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package emailPackage = getDefaultSystemHandlerActvityPackageLPr( emailIntent, userId); if (emailPackage != null && doesPackageSupportRuntimePermissions(emailPackage)) { Loading @@ -370,17 +358,10 @@ final class DefaultPermissionGrantPolicy { } // Browser PackageParser.Package browserPackage = null; String defaultBrowserPackage = mService.getDefaultBrowserPackageName(userId); if (defaultBrowserPackage != null) { browserPackage = getPackageLPr(defaultBrowserPackage); } if (browserPackage == null) { Intent browserIntent = new Intent(Intent.ACTION_MAIN); browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER); browserPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package browserPackage = getDefaultSystemHandlerActvityPackageLPr( browserIntent, userId); } if (browserPackage != null && doesPackageSupportRuntimePermissions(browserPackage)) { grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId); Loading Loading @@ -439,44 +420,9 @@ final class DefaultPermissionGrantPolicy { } } mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId); } } public void grantDefaultPermissionsToDefaultSmsAppLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default sms app for user:" + userId); if (packageName == null) { return; } PackageParser.Package smsPackage = getPackageLPr(packageName); if (smsPackage != null && doesPackageSupportRuntimePermissions(smsPackage)) { grantRuntimePermissionsLPw(smsPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, SMS_PERMISSIONS, userId); } } public void grantDefaultPermissionsToDefaultDialerAppLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default dialer app for user:" + userId); if (packageName == null) { return; } PackageParser.Package dialerPackage = getPackageLPr(packageName); if (dialerPackage != null && doesPackageSupportRuntimePermissions(dialerPackage)) { grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId); } } public void grantDefaultPermissionsToEnabledCarrierAppsLPr(String[] packageNames, int userId) { Log.i(TAG, "Granting permissions to enabled carrier apps for user:" + userId); if (packageNames == null) { return; } for (String packageName : packageNames) { // Carrier apps if (carrierAppPackageNames != null) { for (String packageName : carrierAppPackageNames) { PackageParser.Package carrierPackage = getSystemPackageLPr(packageName); if (carrierPackage != null && doesPackageSupportRuntimePermissions(carrierPackage)) { Loading @@ -486,15 +432,7 @@ final class DefaultPermissionGrantPolicy { } } public void grantDefaultPermissionsToDefaultBrowserLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); if (packageName == null) { return; } PackageParser.Package browserPackage = getSystemPackageLPr(packageName); if (browserPackage != null && doesPackageSupportRuntimePermissions(browserPackage)) { grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId); mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId); } } Loading Loading @@ -528,7 +466,7 @@ final class DefaultPermissionGrantPolicy { return handlerPackages; } private PackageParser.Package getDefaultSystemHandlerActivityPackageLPr( private PackageParser.Package getDefaultSystemHandlerActvityPackageLPr( Intent intent, int userId) { List<ResolveInfo> handlers = mService.queryIntentActivities(intent, null, 0, userId); final int handlerCount = handlers.size(); Loading @@ -553,12 +491,8 @@ final class DefaultPermissionGrantPolicy { return null; } private PackageParser.Package getPackageLPr(String packageName) { return mService.mPackages.get(packageName); } private PackageParser.Package getSystemPackageLPr(String packageName) { PackageParser.Package pkg = getPackageLPr(packageName); PackageParser.Package pkg = mService.mPackages.get(packageName); if (pkg != null && pkg.isSystemApp()) { return !isSysComponentOrPersistentPrivApp(pkg) ? pkg : null; } Loading Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ LOCAL_SRC_FILES += \ core/java/android/content/pm/IPackageManager.aidl \ core/java/android/content/pm/IPackageMoveObserver.aidl \ core/java/android/content/pm/IPackageStatsObserver.aidl \ core/java/android/content/pm/IPackagesProvider.aidl \ core/java/android/content/pm/IOnPermissionsChangeListener.aidl \ core/java/android/database/IContentObserver.aidl \ core/java/android/hardware/ICameraService.aidl \ Loading
core/java/android/content/pm/IPackageManager.aidl +3 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.pm.IPackageDeleteObserver2; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.IPackagesProvider; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.InstrumentationInfo; Loading Loading @@ -503,7 +504,7 @@ interface IPackageManager { void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissions(int userId); void setCarrierAppPackagesProvider(in IPackagesProvider provider); int getMountExternalMode(int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); }
core/java/android/content/pm/IPackagesProvider.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; /** {@hide} */ interface IPackagesProvider { String[] getPackages(int userId); }
core/java/android/content/pm/PackageManagerInternal.java +0 −26 Original line number Diff line number Diff line Loading @@ -55,30 +55,4 @@ public abstract class PackageManagerInternal { * @param provider The packages provider. */ public abstract void setVoiceInteractionPackagesProvider(PackagesProvider provider); /** * Sets the SMS packages provider. * @param provider The packages provider. */ public abstract void setSmsAppPackagesProvider(PackagesProvider provider); /** * Sets the dialer packages provider. * @param provider The packages provider. */ public abstract void setDialerAppPackagesProvider(PackagesProvider provider); /** * Requests granting of the default permissions to the current default SMS app. * @param packageName The default SMS package name. * @param userId The user for which to grant the permissions. */ public abstract void grantDefaultPermissionsToDefaultSmsApp(String packageName, int userId); /** * Requests granting of the default permissions to the current default dialer app. * @param packageName The default dialer package name. * @param userId The user for which to grant the permissions. */ public abstract void grantDefaultPermissionsToDefaultDialerApp(String packageName, int userId); }
services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +54 −120 Original line number Diff line number Diff line Loading @@ -135,8 +135,7 @@ final class DefaultPermissionGrantPolicy { private PackagesProvider mImePackagesProvider; private PackagesProvider mLocationPackagesProvider; private PackagesProvider mVoiceInteractionPackagesProvider; private PackagesProvider mSmsAppPackagesProvider; private PackagesProvider mDialerAppPackagesProvider; private PackagesProvider mCarrierAppPackagesProvider; public DefaultPermissionGrantPolicy(PackageManagerService service) { mService = service; Loading @@ -154,12 +153,8 @@ final class DefaultPermissionGrantPolicy { mVoiceInteractionPackagesProvider = provider; } public void setSmsAppPackagesProviderLPw(PackagesProvider provider) { mSmsAppPackagesProvider = provider; } public void setDialerAppPackagesProviderLPw(PackagesProvider provider) { mDialerAppPackagesProvider = provider; public void setCarrierAppPackagesProviderLPw(PackagesProvider provider) { mCarrierAppPackagesProvider = provider; } public void grantDefaultPermissions(int userId) { Loading @@ -168,7 +163,7 @@ final class DefaultPermissionGrantPolicy { } private void grantPermissionsToSysComponentsAndPrivApps(int userId) { Log.i(TAG, "Granting permissions to platform components for user" + userId); Log.i(TAG, "Granting permissions to platform components"); synchronized (mService.mPackages) { for (PackageParser.Package pkg : mService.mPackages.values()) { Loading Loading @@ -200,20 +195,18 @@ final class DefaultPermissionGrantPolicy { } private void grantDefaultSystemHandlerPermissions(int userId) { Log.i(TAG, "Granting permissions to default platform handlers for user:" + userId); Log.i(TAG, "Granting permissions to default platform handlers"); final PackagesProvider imePackagesProvider; final PackagesProvider locationPackagesProvider; final PackagesProvider voiceInteractionPackagesProvider; final PackagesProvider smsAppPackagesProvider; final PackagesProvider dialerAppPackagesProvider; final PackagesProvider carrierAppPackagesProvider; synchronized (mService.mPackages) { imePackagesProvider = mImePackagesProvider; locationPackagesProvider = mLocationPackagesProvider; voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider; smsAppPackagesProvider = mSmsAppPackagesProvider; dialerAppPackagesProvider = mDialerAppPackagesProvider; carrierAppPackagesProvider = mCarrierAppPackagesProvider; } String[] imePackageNames = (imePackagesProvider != null) Loading @@ -222,10 +215,8 @@ final class DefaultPermissionGrantPolicy { ? 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[] carrierAppPackageNames = (carrierAppPackagesProvider != null) ? carrierAppPackagesProvider.getPackages(userId) : null; synchronized (mService.mPackages) { // Installers Loading Loading @@ -257,7 +248,7 @@ final class DefaultPermissionGrantPolicy { // SetupWizard Intent setupIntent = new Intent(Intent.ACTION_MAIN); setupIntent.addCategory(Intent.CATEGORY_HOME); PackageParser.Package setupPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package setupPackage = getDefaultSystemHandlerActvityPackageLPr( setupIntent, userId); if (setupPackage != null && doesPackageSupportRuntimePermissions(setupPackage)) { Loading @@ -266,10 +257,10 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(setupPackage, SETTINGS_PERMISSIONS, userId); } // Dialer if (dialerAppPackageNames != null) { for (String dialerAppPackageName : dialerAppPackageNames) { PackageParser.Package dialerPackage = getPackageLPr(dialerAppPackageName); // Phone Intent dialerIntent = new Intent(Intent.ACTION_DIAL); PackageParser.Package dialerPackage = getDefaultSystemHandlerActvityPackageLPr( dialerIntent, userId); if (dialerPackage != null && doesPackageSupportRuntimePermissions(dialerPackage)) { grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId); Loading @@ -277,12 +268,10 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId); } } } // Camera Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); PackageParser.Package cameraPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package cameraPackage = getDefaultSystemHandlerActvityPackageLPr( cameraIntent, userId); if (cameraPackage != null && doesPackageSupportRuntimePermissions(cameraPackage)) { Loading @@ -307,30 +296,29 @@ final class DefaultPermissionGrantPolicy { // Downloads UI Intent downloadsUiIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActvityPackageLPr( downloadsUiIntent, userId); if (downloadsUiPackage != null && doesPackageSupportRuntimePermissions(downloadsUiPackage)) { grantRuntimePermissionsLPw(downloadsUiPackage, STORAGE_PERMISSIONS, userId); } // SMS if (smsAppPackageNames != null) { for (String smsPackageName : smsAppPackageNames) { PackageParser.Package smsPackage = getPackageLPr(smsPackageName); if (smsPackage != null && doesPackageSupportRuntimePermissions(smsPackage)) { grantRuntimePermissionsLPw(smsPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, SMS_PERMISSIONS, userId); } } // Messaging Intent messagingIntent = new Intent(Intent.ACTION_MAIN); messagingIntent.addCategory(Intent.CATEGORY_APP_MESSAGING); PackageParser.Package messagingPackage = getDefaultSystemHandlerActvityPackageLPr( messagingIntent, userId); if (messagingPackage != null && doesPackageSupportRuntimePermissions(messagingPackage)) { grantRuntimePermissionsLPw(messagingPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(messagingPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(messagingPackage, SMS_PERMISSIONS, userId); } // Calendar Intent calendarIntent = new Intent(Intent.ACTION_MAIN); calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR); PackageParser.Package calendarPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package calendarPackage = getDefaultSystemHandlerActvityPackageLPr( calendarIntent, userId); if (calendarPackage != null && doesPackageSupportRuntimePermissions(calendarPackage)) { Loading @@ -341,7 +329,7 @@ final class DefaultPermissionGrantPolicy { // Contacts Intent contactsIntent = new Intent(Intent.ACTION_MAIN); contactsIntent.addCategory(Intent.CATEGORY_APP_CONTACTS); PackageParser.Package contactsPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package contactsPackage = getDefaultSystemHandlerActvityPackageLPr( contactsIntent, userId); if (contactsPackage != null && doesPackageSupportRuntimePermissions(contactsPackage)) { Loading @@ -352,7 +340,7 @@ final class DefaultPermissionGrantPolicy { // Maps Intent mapsIntent = new Intent(Intent.ACTION_MAIN); mapsIntent.addCategory(Intent.CATEGORY_APP_MAPS); PackageParser.Package mapsPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package mapsPackage = getDefaultSystemHandlerActvityPackageLPr( mapsIntent, userId); if (mapsPackage != null && doesPackageSupportRuntimePermissions(mapsPackage)) { Loading @@ -362,7 +350,7 @@ final class DefaultPermissionGrantPolicy { // Email Intent emailIntent = new Intent(Intent.ACTION_MAIN); emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL); PackageParser.Package emailPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package emailPackage = getDefaultSystemHandlerActvityPackageLPr( emailIntent, userId); if (emailPackage != null && doesPackageSupportRuntimePermissions(emailPackage)) { Loading @@ -370,17 +358,10 @@ final class DefaultPermissionGrantPolicy { } // Browser PackageParser.Package browserPackage = null; String defaultBrowserPackage = mService.getDefaultBrowserPackageName(userId); if (defaultBrowserPackage != null) { browserPackage = getPackageLPr(defaultBrowserPackage); } if (browserPackage == null) { Intent browserIntent = new Intent(Intent.ACTION_MAIN); browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER); browserPackage = getDefaultSystemHandlerActivityPackageLPr( PackageParser.Package browserPackage = getDefaultSystemHandlerActvityPackageLPr( browserIntent, userId); } if (browserPackage != null && doesPackageSupportRuntimePermissions(browserPackage)) { grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId); Loading Loading @@ -439,44 +420,9 @@ final class DefaultPermissionGrantPolicy { } } mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId); } } public void grantDefaultPermissionsToDefaultSmsAppLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default sms app for user:" + userId); if (packageName == null) { return; } PackageParser.Package smsPackage = getPackageLPr(packageName); if (smsPackage != null && doesPackageSupportRuntimePermissions(smsPackage)) { grantRuntimePermissionsLPw(smsPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(smsPackage, SMS_PERMISSIONS, userId); } } public void grantDefaultPermissionsToDefaultDialerAppLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default dialer app for user:" + userId); if (packageName == null) { return; } PackageParser.Package dialerPackage = getPackageLPr(packageName); if (dialerPackage != null && doesPackageSupportRuntimePermissions(dialerPackage)) { grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, CONTACTS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId); grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId); } } public void grantDefaultPermissionsToEnabledCarrierAppsLPr(String[] packageNames, int userId) { Log.i(TAG, "Granting permissions to enabled carrier apps for user:" + userId); if (packageNames == null) { return; } for (String packageName : packageNames) { // Carrier apps if (carrierAppPackageNames != null) { for (String packageName : carrierAppPackageNames) { PackageParser.Package carrierPackage = getSystemPackageLPr(packageName); if (carrierPackage != null && doesPackageSupportRuntimePermissions(carrierPackage)) { Loading @@ -486,15 +432,7 @@ final class DefaultPermissionGrantPolicy { } } public void grantDefaultPermissionsToDefaultBrowserLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); if (packageName == null) { return; } PackageParser.Package browserPackage = getSystemPackageLPr(packageName); if (browserPackage != null && doesPackageSupportRuntimePermissions(browserPackage)) { grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId); mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId); } } Loading Loading @@ -528,7 +466,7 @@ final class DefaultPermissionGrantPolicy { return handlerPackages; } private PackageParser.Package getDefaultSystemHandlerActivityPackageLPr( private PackageParser.Package getDefaultSystemHandlerActvityPackageLPr( Intent intent, int userId) { List<ResolveInfo> handlers = mService.queryIntentActivities(intent, null, 0, userId); final int handlerCount = handlers.size(); Loading @@ -553,12 +491,8 @@ final class DefaultPermissionGrantPolicy { return null; } private PackageParser.Package getPackageLPr(String packageName) { return mService.mPackages.get(packageName); } private PackageParser.Package getSystemPackageLPr(String packageName) { PackageParser.Package pkg = getPackageLPr(packageName); PackageParser.Package pkg = mService.mPackages.get(packageName); if (pkg != null && pkg.isSystemApp()) { return !isSysComponentOrPersistentPrivApp(pkg) ? pkg : null; } Loading