Exempt TV devices from Notification Permission
Do not implicitly add the notification permission to apps on TV devices, and automatically grant the permission as GRANTED_BY_DEFAULT to explicit requesters. Bug: 220968160 Test: Manual Change-Id: I9aeef86871ab7ca912cc30e1cf4ebd84d7014992 Merged-In: I9aeef86871ab7ca912cc30e1cf4ebd84d7014992
This commit is contained in:
@@ -55,8 +55,10 @@ public final class PermissionHelper {
|
|||||||
private final PermissionManagerServiceInternal mPmi;
|
private final PermissionManagerServiceInternal mPmi;
|
||||||
private final IPackageManager mPackageManager;
|
private final IPackageManager mPackageManager;
|
||||||
private final IPermissionManager mPermManager;
|
private final IPermissionManager mPermManager;
|
||||||
// TODO (b/194833441): Remove when the migration is enabled
|
// TODO (b/194833441): Remove this boolean (but keep the isMigrationEnabled() method)
|
||||||
|
// when the migration is enabled
|
||||||
private final boolean mMigrationEnabled;
|
private final boolean mMigrationEnabled;
|
||||||
|
private final boolean mIsTv;
|
||||||
private final boolean mForceUserSetOnUpgrade;
|
private final boolean mForceUserSetOnUpgrade;
|
||||||
|
|
||||||
public PermissionHelper(PermissionManagerServiceInternal pmi, IPackageManager packageManager,
|
public PermissionHelper(PermissionManagerServiceInternal pmi, IPackageManager packageManager,
|
||||||
@@ -67,10 +69,17 @@ public final class PermissionHelper {
|
|||||||
mPermManager = permManager;
|
mPermManager = permManager;
|
||||||
mMigrationEnabled = migrationEnabled;
|
mMigrationEnabled = migrationEnabled;
|
||||||
mForceUserSetOnUpgrade = forceUserSetOnUpgrade;
|
mForceUserSetOnUpgrade = forceUserSetOnUpgrade;
|
||||||
|
boolean isTv;
|
||||||
|
try {
|
||||||
|
isTv = mPackageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK, 0);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
isTv = false;
|
||||||
|
}
|
||||||
|
mIsTv = isTv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMigrationEnabled() {
|
public boolean isMigrationEnabled() {
|
||||||
return mMigrationEnabled;
|
return mMigrationEnabled && !mIsTv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -297,6 +297,8 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
|
|||||||
.OnRuntimePermissionStateChangedListener>
|
.OnRuntimePermissionStateChangedListener>
|
||||||
mRuntimePermissionStateChangedListeners = new ArrayList<>();
|
mRuntimePermissionStateChangedListeners = new ArrayList<>();
|
||||||
|
|
||||||
|
private final boolean mIsLeanback;
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private final OnPermissionChangeListeners mOnPermissionChangeListeners;
|
private final OnPermissionChangeListeners mOnPermissionChangeListeners;
|
||||||
|
|
||||||
@@ -380,6 +382,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
|
|||||||
mContext = context;
|
mContext = context;
|
||||||
mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class);
|
mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class);
|
||||||
mUserManagerInt = LocalServices.getService(UserManagerInternal.class);
|
mUserManagerInt = LocalServices.getService(UserManagerInternal.class);
|
||||||
|
mIsLeanback = availableFeatures.containsKey(PackageManager.FEATURE_LEANBACK);
|
||||||
|
|
||||||
mPrivilegedPermissionAllowlistSourcePackageNames.add(PLATFORM_PACKAGE_NAME);
|
mPrivilegedPermissionAllowlistSourcePackageNames.add(PLATFORM_PACKAGE_NAME);
|
||||||
// PackageManager.hasSystemFeature() is not used here because PackageManagerService
|
// PackageManager.hasSystemFeature() is not used here because PackageManagerService
|
||||||
@@ -2822,6 +2825,14 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mIsLeanback && NOTIFICATION_PERMISSIONS.contains(permName)) {
|
||||||
|
uidState.grantPermission(bp);
|
||||||
|
if (origPermState == null || !origPermState.isGranted()) {
|
||||||
|
if (uidState.grantPermission(bp)) {
|
||||||
|
wasChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (origPermState == null) {
|
if (origPermState == null) {
|
||||||
// New permission
|
// New permission
|
||||||
|
|||||||
Reference in New Issue
Block a user