因项目需要,判断当前是系统app还是use app,以下是对手机内部安装的APP进行判断,因此就记下来了,以后可做参考;
1.定义,判断SystemApp and UseApp / updateApp;
public class SystemApp { public SystemApp() { } public boolean isSystemApp(PackageInfo pInfo) { //判断是否是系统软件 return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); } public boolean isSystemUpdateApp(PackageInfo pInfo) { //判断是否是软件更新.. return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0); } public boolean isUserApp(PackageInfo pInfo) { //是否是系统软件或者是系统软件正在更新 return (!isSystemApp(pInfo) && !isSystemUpdateApp(pInfo)); } }
2.下面是个案例,仅供参考:
for (int i = 0; i < mActiveNotifications.size(); i++) { NotificationData.Entry entry = mActiveNotifications.get(i); //获取包名 String pkg = entry.notification.getPackageName(); try { //获取PackageInfo pInfo = mContext.getApplicationContext().getPackageManager().getPackageInfo(pkg, 0); boolean isUser = tools.isUserApp(pInfo); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if (isUser) { //在这里处理自己要的逻辑 } else { //.................. } }
谢谢!