Check time-spent-in-app intent must come from system app.

Change-Id: Ie73aacdaf919b336d99a296328c2fbb4f75036b0
Fixes: 74580195
Test: robotests
This commit is contained in:
Fan Zhang
2018-03-28 18:02:40 -07:00
parent f9cfc7c75a
commit b803a23031
2 changed files with 31 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.annotation.VisibleForTesting;
@@ -61,7 +62,12 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController
if (resolved == null || resolved.isEmpty()) {
return DISABLED_UNSUPPORTED;
}
return AVAILABLE;
for (ResolveInfo info : resolved) {
if (isSystemApp(info)) {
return AVAILABLE;
}
}
return DISABLED_UNSUPPORTED;
}
@Override
@@ -72,4 +78,11 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController
pref.setIntent(mIntent);
}
}
private boolean isSystemApp(ResolveInfo info) {
return info != null
&& info.activityInfo != null
&& info.activityInfo.applicationInfo != null
&& (info.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}
}