Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee4e4e79 authored by Svetoslav's avatar Svetoslav Committed by Android Git Automerger
Browse files

am 358a8362: am ae45cfa6: am 03b5f128: Merge "Grant default permissons to the...

am 358a8362: am ae45cfa6: am 03b5f128: Merge "Grant default permissons to the default SMS, Phone, Browser app." into mnc-dev

* commit '358a8362':
  Grant default permissons to the default SMS, Phone, Browser app.
parents 7f8e1098 358a8362
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -142,7 +142,6 @@ LOCAL_SRC_FILES += \
	core/java/android/content/pm/IPackageManager.aidl \
	core/java/android/content/pm/IPackageManager.aidl \
	core/java/android/content/pm/IPackageMoveObserver.aidl \
	core/java/android/content/pm/IPackageMoveObserver.aidl \
	core/java/android/content/pm/IPackageStatsObserver.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/content/pm/IOnPermissionsChangeListener.aidl \
	core/java/android/database/IContentObserver.aidl \
	core/java/android/database/IContentObserver.aidl \
	core/java/android/hardware/ICameraService.aidl \
	core/java/android/hardware/ICameraService.aidl \
+2 −3
Original line number Original line Diff line number Diff line
@@ -31,7 +31,6 @@ import android.content.pm.IPackageDeleteObserver2;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageMoveObserver;
import android.content.pm.IPackageMoveObserver;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.IPackagesProvider;
import android.content.pm.IOnPermissionsChangeListener;
import android.content.pm.IOnPermissionsChangeListener;
import android.content.pm.IntentFilterVerificationInfo;
import android.content.pm.IntentFilterVerificationInfo;
import android.content.pm.InstrumentationInfo;
import android.content.pm.InstrumentationInfo;
@@ -504,7 +503,7 @@ interface IPackageManager {
    void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
    void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
    void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
    void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);


    void grantDefaultPermissions(int userId);
    void setCarrierAppPackagesProvider(in IPackagesProvider provider);
    int getMountExternalMode(int uid);
    int getMountExternalMode(int uid);

    void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId);
}
}
+0 −22
Original line number Original line 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);
}
+26 −0
Original line number Original line Diff line number Diff line
@@ -55,4 +55,30 @@ public abstract class PackageManagerInternal {
     * @param provider The packages provider.
     * @param provider The packages provider.
     */
     */
    public abstract void setVoiceInteractionPackagesProvider(PackagesProvider 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);
}
}
+119 −53
Original line number Original line Diff line number Diff line
@@ -143,7 +143,8 @@ final class DefaultPermissionGrantPolicy {
    private PackagesProvider mImePackagesProvider;
    private PackagesProvider mImePackagesProvider;
    private PackagesProvider mLocationPackagesProvider;
    private PackagesProvider mLocationPackagesProvider;
    private PackagesProvider mVoiceInteractionPackagesProvider;
    private PackagesProvider mVoiceInteractionPackagesProvider;
    private PackagesProvider mCarrierAppPackagesProvider;
    private PackagesProvider mSmsAppPackagesProvider;
    private PackagesProvider mDialerAppPackagesProvider;


    public DefaultPermissionGrantPolicy(PackageManagerService service) {
    public DefaultPermissionGrantPolicy(PackageManagerService service) {
        mService = service;
        mService = service;
@@ -161,8 +162,12 @@ final class DefaultPermissionGrantPolicy {
        mVoiceInteractionPackagesProvider = provider;
        mVoiceInteractionPackagesProvider = provider;
    }
    }


    public void setCarrierAppPackagesProviderLPw(PackagesProvider provider) {
    public void setSmsAppPackagesProviderLPw(PackagesProvider provider) {
        mCarrierAppPackagesProvider = provider;
        mSmsAppPackagesProvider = provider;
    }

    public void setDialerAppPackagesProviderLPw(PackagesProvider provider) {
        mDialerAppPackagesProvider = provider;
    }
    }


    public void grantDefaultPermissions(int userId) {
    public void grantDefaultPermissions(int userId) {
@@ -171,7 +176,7 @@ final class DefaultPermissionGrantPolicy {
    }
    }


    private void grantPermissionsToSysComponentsAndPrivApps(int userId) {
    private void grantPermissionsToSysComponentsAndPrivApps(int userId) {
        Log.i(TAG, "Granting permissions to platform components");
        Log.i(TAG, "Granting permissions to platform components for user" + userId);


        synchronized (mService.mPackages) {
        synchronized (mService.mPackages) {
            for (PackageParser.Package pkg : mService.mPackages.values()) {
            for (PackageParser.Package pkg : mService.mPackages.values()) {
@@ -203,18 +208,20 @@ final class DefaultPermissionGrantPolicy {
    }
    }


    private void grantDefaultSystemHandlerPermissions(int userId) {
    private void grantDefaultSystemHandlerPermissions(int userId) {
        Log.i(TAG, "Granting permissions to default platform handlers");
        Log.i(TAG, "Granting permissions to default platform handlers for user:" + userId);


        final PackagesProvider imePackagesProvider;
        final PackagesProvider imePackagesProvider;
        final PackagesProvider locationPackagesProvider;
        final PackagesProvider locationPackagesProvider;
        final PackagesProvider voiceInteractionPackagesProvider;
        final PackagesProvider voiceInteractionPackagesProvider;
        final PackagesProvider carrierAppPackagesProvider;
        final PackagesProvider smsAppPackagesProvider;
        final PackagesProvider dialerAppPackagesProvider;


        synchronized (mService.mPackages) {
        synchronized (mService.mPackages) {
            imePackagesProvider = mImePackagesProvider;
            imePackagesProvider = mImePackagesProvider;
            locationPackagesProvider = mLocationPackagesProvider;
            locationPackagesProvider = mLocationPackagesProvider;
            voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider;
            voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider;
            carrierAppPackagesProvider = mCarrierAppPackagesProvider;
            smsAppPackagesProvider = mSmsAppPackagesProvider;
            dialerAppPackagesProvider = mDialerAppPackagesProvider;
        }
        }


        String[] imePackageNames = (imePackagesProvider != null)
        String[] imePackageNames = (imePackagesProvider != null)
@@ -223,8 +230,10 @@ final class DefaultPermissionGrantPolicy {
                ? voiceInteractionPackagesProvider.getPackages(userId) : null;
                ? voiceInteractionPackagesProvider.getPackages(userId) : null;
        String[] locationPackageNames = (locationPackagesProvider != null)
        String[] locationPackageNames = (locationPackagesProvider != null)
                ? locationPackagesProvider.getPackages(userId) : null;
                ? locationPackagesProvider.getPackages(userId) : null;
        String[] carrierAppPackageNames = (carrierAppPackagesProvider != null)
        String[] smsAppPackageNames = (smsAppPackagesProvider != null)
                ? carrierAppPackagesProvider.getPackages(userId) : null;
                ? smsAppPackagesProvider.getPackages(userId) : null;
        String[] dialerAppPackageNames = (dialerAppPackagesProvider != null)
                ? dialerAppPackagesProvider.getPackages(userId) : null;


        synchronized (mService.mPackages) {
        synchronized (mService.mPackages) {
            // Installers
            // Installers
@@ -256,7 +265,7 @@ final class DefaultPermissionGrantPolicy {
            // SetupWizard
            // SetupWizard
            Intent setupIntent = new Intent(Intent.ACTION_MAIN);
            Intent setupIntent = new Intent(Intent.ACTION_MAIN);
            setupIntent.addCategory(Intent.CATEGORY_HOME);
            setupIntent.addCategory(Intent.CATEGORY_HOME);
            PackageParser.Package setupPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package setupPackage = getDefaultSystemHandlerActivityPackageLPr(
                    setupIntent, userId);
                    setupIntent, userId);
            if (setupPackage != null
            if (setupPackage != null
                    && doesPackageSupportRuntimePermissions(setupPackage)) {
                    && doesPackageSupportRuntimePermissions(setupPackage)) {
@@ -265,10 +274,10 @@ final class DefaultPermissionGrantPolicy {
                grantRuntimePermissionsLPw(setupPackage, SETTINGS_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(setupPackage, SETTINGS_PERMISSIONS, userId);
            }
            }


            // Phone
            // Dialer
            Intent dialerIntent = new Intent(Intent.ACTION_DIAL);
            if (dialerAppPackageNames != null) {
            PackageParser.Package dialerPackage = getDefaultSystemHandlerActvityPackageLPr(
                for (String dialerAppPackageName : dialerAppPackageNames) {
                    dialerIntent, userId);
                    PackageParser.Package dialerPackage = getPackageLPr(dialerAppPackageName);
                    if (dialerPackage != null
                    if (dialerPackage != null
                            && doesPackageSupportRuntimePermissions(dialerPackage)) {
                            && doesPackageSupportRuntimePermissions(dialerPackage)) {
                        grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(dialerPackage, PHONE_PERMISSIONS, userId);
@@ -276,10 +285,12 @@ final class DefaultPermissionGrantPolicy {
                        grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId);
                    }
                    }
                }
            }


            // Camera
            // Camera
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            PackageParser.Package cameraPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package cameraPackage = getDefaultSystemHandlerActivityPackageLPr(
                    cameraIntent, userId);
                    cameraIntent, userId);
            if (cameraPackage != null
            if (cameraPackage != null
                    && doesPackageSupportRuntimePermissions(cameraPackage)) {
                    && doesPackageSupportRuntimePermissions(cameraPackage)) {
@@ -304,29 +315,30 @@ final class DefaultPermissionGrantPolicy {


            // Downloads UI
            // Downloads UI
            Intent downloadsUiIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
            Intent downloadsUiIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
            PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package downloadsUiPackage = getDefaultSystemHandlerActivityPackageLPr(
                    downloadsUiIntent, userId);
                    downloadsUiIntent, userId);
            if (downloadsUiPackage != null
            if (downloadsUiPackage != null
                    && doesPackageSupportRuntimePermissions(downloadsUiPackage)) {
                    && doesPackageSupportRuntimePermissions(downloadsUiPackage)) {
                grantRuntimePermissionsLPw(downloadsUiPackage, STORAGE_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(downloadsUiPackage, STORAGE_PERMISSIONS, userId);
            }
            }


            // Messaging
            // SMS
            Intent messagingIntent = new Intent(Intent.ACTION_MAIN);
            if (smsAppPackageNames != null) {
            messagingIntent.addCategory(Intent.CATEGORY_APP_MESSAGING);
                for (String smsPackageName : smsAppPackageNames) {
            PackageParser.Package messagingPackage = getDefaultSystemHandlerActvityPackageLPr(
                    PackageParser.Package smsPackage = getPackageLPr(smsPackageName);
                    messagingIntent, userId);
                    if (smsPackage != null
            if (messagingPackage != null
                            && doesPackageSupportRuntimePermissions(smsPackage)) {
                    && doesPackageSupportRuntimePermissions(messagingPackage)) {
                        grantRuntimePermissionsLPw(smsPackage, PHONE_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(messagingPackage, PHONE_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(smsPackage, CONTACTS_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(messagingPackage, CONTACTS_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(smsPackage, SMS_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(messagingPackage, SMS_PERMISSIONS, userId);
                    }
                }
            }
            }


            // Calendar
            // Calendar
            Intent calendarIntent = new Intent(Intent.ACTION_MAIN);
            Intent calendarIntent = new Intent(Intent.ACTION_MAIN);
            calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR);
            calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR);
            PackageParser.Package calendarPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package calendarPackage = getDefaultSystemHandlerActivityPackageLPr(
                    calendarIntent, userId);
                    calendarIntent, userId);
            if (calendarPackage != null
            if (calendarPackage != null
                    && doesPackageSupportRuntimePermissions(calendarPackage)) {
                    && doesPackageSupportRuntimePermissions(calendarPackage)) {
@@ -348,7 +360,7 @@ final class DefaultPermissionGrantPolicy {
            // Contacts
            // Contacts
            Intent contactsIntent = new Intent(Intent.ACTION_MAIN);
            Intent contactsIntent = new Intent(Intent.ACTION_MAIN);
            contactsIntent.addCategory(Intent.CATEGORY_APP_CONTACTS);
            contactsIntent.addCategory(Intent.CATEGORY_APP_CONTACTS);
            PackageParser.Package contactsPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package contactsPackage = getDefaultSystemHandlerActivityPackageLPr(
                    contactsIntent, userId);
                    contactsIntent, userId);
            if (contactsPackage != null
            if (contactsPackage != null
                    && doesPackageSupportRuntimePermissions(contactsPackage)) {
                    && doesPackageSupportRuntimePermissions(contactsPackage)) {
@@ -379,7 +391,7 @@ final class DefaultPermissionGrantPolicy {
            // Maps
            // Maps
            Intent mapsIntent = new Intent(Intent.ACTION_MAIN);
            Intent mapsIntent = new Intent(Intent.ACTION_MAIN);
            mapsIntent.addCategory(Intent.CATEGORY_APP_MAPS);
            mapsIntent.addCategory(Intent.CATEGORY_APP_MAPS);
            PackageParser.Package mapsPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package mapsPackage = getDefaultSystemHandlerActivityPackageLPr(
                    mapsIntent, userId);
                    mapsIntent, userId);
            if (mapsPackage != null
            if (mapsPackage != null
                    && doesPackageSupportRuntimePermissions(mapsPackage)) {
                    && doesPackageSupportRuntimePermissions(mapsPackage)) {
@@ -389,7 +401,7 @@ final class DefaultPermissionGrantPolicy {
            // Email
            // Email
            Intent emailIntent = new Intent(Intent.ACTION_MAIN);
            Intent emailIntent = new Intent(Intent.ACTION_MAIN);
            emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL);
            emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL);
            PackageParser.Package emailPackage = getDefaultSystemHandlerActvityPackageLPr(
            PackageParser.Package emailPackage = getDefaultSystemHandlerActivityPackageLPr(
                    emailIntent, userId);
                    emailIntent, userId);
            if (emailPackage != null
            if (emailPackage != null
                    && doesPackageSupportRuntimePermissions(emailPackage)) {
                    && doesPackageSupportRuntimePermissions(emailPackage)) {
@@ -397,10 +409,17 @@ final class DefaultPermissionGrantPolicy {
            }
            }


            // Browser
            // 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);
                Intent browserIntent = new Intent(Intent.ACTION_MAIN);
                browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER);
                browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER);
            PackageParser.Package browserPackage = getDefaultSystemHandlerActvityPackageLPr(
                browserPackage = getDefaultSystemHandlerActivityPackageLPr(
                        browserIntent, userId);
                        browserIntent, userId);
            }
            if (browserPackage != null
            if (browserPackage != null
                    && doesPackageSupportRuntimePermissions(browserPackage)) {
                    && doesPackageSupportRuntimePermissions(browserPackage)) {
                grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId);
@@ -459,9 +478,44 @@ final class DefaultPermissionGrantPolicy {
                }
                }
            }
            }


            // Carrier apps
            mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
            if (carrierAppPackageNames != null) {
        }
                for (String packageName : carrierAppPackageNames) {
    }

    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) {
            PackageParser.Package carrierPackage = getSystemPackageLPr(packageName);
            PackageParser.Package carrierPackage = getSystemPackageLPr(packageName);
            if (carrierPackage != null
            if (carrierPackage != null
                    && doesPackageSupportRuntimePermissions(carrierPackage)) {
                    && doesPackageSupportRuntimePermissions(carrierPackage)) {
@@ -471,7 +525,15 @@ final class DefaultPermissionGrantPolicy {
        }
        }
    }
    }


            mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
    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);
        }
        }
    }
    }


@@ -505,7 +567,7 @@ final class DefaultPermissionGrantPolicy {
        return handlerPackages;
        return handlerPackages;
    }
    }


    private PackageParser.Package getDefaultSystemHandlerActvityPackageLPr(
    private PackageParser.Package getDefaultSystemHandlerActivityPackageLPr(
            Intent intent, int userId) {
            Intent intent, int userId) {
        List<ResolveInfo> handlers = mService.queryIntentActivities(intent, null, 0, userId);
        List<ResolveInfo> handlers = mService.queryIntentActivities(intent, null, 0, userId);
        final int handlerCount = handlers.size();
        final int handlerCount = handlers.size();
@@ -530,8 +592,12 @@ final class DefaultPermissionGrantPolicy {
        return null;
        return null;
    }
    }


    private PackageParser.Package getPackageLPr(String packageName) {
        return mService.mPackages.get(packageName);
    }

    private PackageParser.Package getSystemPackageLPr(String packageName) {
    private PackageParser.Package getSystemPackageLPr(String packageName) {
        PackageParser.Package pkg = mService.mPackages.get(packageName);
        PackageParser.Package pkg = getPackageLPr(packageName);
        if (pkg != null && pkg.isSystemApp()) {
        if (pkg != null && pkg.isSystemApp()) {
            return !isSysComponentOrPersistentPrivApp(pkg) ? pkg : null;
            return !isSysComponentOrPersistentPrivApp(pkg) ? pkg : null;
        }
        }
Loading