Merge "Only initialize PermissionUsageHelper lazily or when requested" into sc-v2-dev
This commit is contained in:
@@ -159,8 +159,6 @@ public final class PermissionManager {
|
|||||||
mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getServiceOrThrow(
|
mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getServiceOrThrow(
|
||||||
"permissionmgr"));
|
"permissionmgr"));
|
||||||
mLegacyPermissionManager = context.getSystemService(LegacyPermissionManager.class);
|
mLegacyPermissionManager = context.getSystemService(LegacyPermissionManager.class);
|
||||||
//TODO ntmyren: there should be a way to only enable the watcher when requested
|
|
||||||
mUsageHelper = new PermissionUsageHelper(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -871,6 +869,29 @@ public final class PermissionManager {
|
|||||||
return mSplitPermissionInfos;
|
return mSplitPermissionInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the PermissionUsageHelper, which will register active app op listeners
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void initializeUsageHelper() {
|
||||||
|
if (mUsageHelper == null) {
|
||||||
|
mUsageHelper = new PermissionUsageHelper(mContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teardown the PermissionUsageHelper, removing listeners
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void tearDownUsageHelper() {
|
||||||
|
if (mUsageHelper != null) {
|
||||||
|
mUsageHelper.tearDown();
|
||||||
|
mUsageHelper = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return A list of permission groups currently or recently used by all apps by all users in
|
* @return A list of permission groups currently or recently used by all apps by all users in
|
||||||
* the current profile group.
|
* the current profile group.
|
||||||
@@ -881,7 +902,7 @@ public final class PermissionManager {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
|
@RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
|
||||||
public List<PermGroupUsage> getIndicatorAppOpUsageData() {
|
public List<PermGroupUsage> getIndicatorAppOpUsageData() {
|
||||||
return mUsageHelper.getOpUsageData(new AudioManager().isMicrophoneMute());
|
return getIndicatorAppOpUsageData(new AudioManager().isMicrophoneMute());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -896,9 +917,7 @@ public final class PermissionManager {
|
|||||||
@RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
|
@RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
|
||||||
public List<PermGroupUsage> getIndicatorAppOpUsageData(boolean micMuted) {
|
public List<PermGroupUsage> getIndicatorAppOpUsageData(boolean micMuted) {
|
||||||
// Lazily initialize the usage helper
|
// Lazily initialize the usage helper
|
||||||
if (mUsageHelper == null) {
|
initializeUsageHelper();
|
||||||
mUsageHelper = new PermissionUsageHelper(mContext);
|
|
||||||
}
|
|
||||||
return mUsageHelper.getOpUsageData(micMuted);
|
return mUsageHelper.getOpUsageData(micMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -176,6 +176,11 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
return mUserContexts.get(user);
|
return mUserContexts.get(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void tearDown() {
|
||||||
|
mAppOpsManager.stopWatchingActive(this);
|
||||||
|
mAppOpsManager.stopWatchingStarted(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onOpActiveChanged(@NonNull String op, int uid, @NonNull String packageName,
|
public void onOpActiveChanged(@NonNull String op, int uid, @NonNull String packageName,
|
||||||
boolean active) {
|
boolean active) {
|
||||||
|
|||||||
@@ -442,7 +442,11 @@ public class FrameworkServicesModule {
|
|||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
static PermissionManager providePermissionManager(Context context) {
|
static PermissionManager providePermissionManager(Context context) {
|
||||||
return context.getSystemService(PermissionManager.class);
|
PermissionManager pm = context.getSystemService(PermissionManager.class);
|
||||||
|
if (pm != null) {
|
||||||
|
pm.initializeUsageHelper();
|
||||||
|
}
|
||||||
|
return pm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|||||||
Reference in New Issue
Block a user