开发过程中需要对某个应用进行内置并隐藏其包名,可以按照如下代码处理
ApplicationPackageManager.java(frameworks\base\core\java\android\app)中
/** @hide Same as above but for a specific user */
@Override
public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent,
int flags, int userId) {
try {
//hide start
List<ResolveInfo> infos = mPM.queryIntentActivities(intent,
intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags,
userId);
//just input package name which app you want to hide
String[] hideAppPackageNames = {
"com.android.xxxx",
"eu.chainfire.xxxx"
};
List<String> packageNameFilter = Arrays.asList(hideAppPackageNames);
List<ResolveInfo> newInfos = new ArrayList<ResolveInfo>();
for(ResolveInfo info : infos){
String packageName = info.activityInfo.packageName;
if(!packageNameFilter.contains(packageName)){
newInfos.add(info);
}
}
return newInfos;
//hide end
// return mPM.queryIntentActivities(
// intent,
// intent.resolveTypeIfNeeded(mContext.getContentResolver()),
// flags,
// userId);
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
}