summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission/service/ExemptRestrictedPermission.kt
blob: dbf844b273c7708862f1c872a6d443423be01c8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.android.permissioncontroller.permission.service

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Process
import android.os.UserHandle

/**
 * For manually exempting a restricted permission.
 * STOPSHIP This functionality should not be in the final release.
 */
class ExemptRestrictedPermission : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val packageName = intent.getStringExtra("package") ?: return
        val permission = intent.getStringExtra("permission") ?: return
        val userId = intent.getIntExtra("user", Process.myUserHandle().identifier)

        val userContext = context.createContextAsUser(UserHandle.of(userId), 0)

        // Use upgrade flag. If the permission needs to be manually exempted then it probably
        // should have been done on upgrade.
        userContext.packageManager.addWhitelistedRestrictedPermission(packageName, permission,
                PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE)
    }
}