我试图通过以下方式获取所有已安装的 apk:
public ArrayList<InfoObject> getInstalledApps(boolean getSysPackages) {
ArrayList<InfoObject> res = new ArrayList<InfoObject>();
List<PackageInfo> packs = mContext.getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
PackageInfo p = packs.get(i);
Log.v("PACKAGE GET","" +p.packageName + "flags => " + p.applicationInfo.flags);
/* if ((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
continue ;
}*/
InfoObject newInfo = new InfoObject();
newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager());
res.add(newInfo);
}
return res;
}
它工作正常!!
但是没有 ApplicationInfo.FLAG_SYSTEM ,我只显示我安装的 apk (facebook, skype)
使用 ApplicationInfo.FLAG_SYSTEM ,我显示所有 apk(facebook、skype)和所有系统 apk。
我的问题是,从系统 apk 如何过滤我的应用程序菜单上仅存在的应用程序。
例如: 我需要获取 Album Camera facebook ... 并且没有 devicemonitor、InputDevices、Memoire 应用程序
谢谢
最佳答案
这里是我问题的答案:)
我们可以通过 getLaunchIntentForPackage 获取所有应用程序,这些应用程序返回一个良好的 Intent 来启动包中的前门 Activity 。
if( mContext.getPackageManager().getLaunchIntentForPackage(p.packageName) != null )
谢谢
关于android - 如何让所有包只显示在应用程序屏幕中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38003042/