android - 如何让所有包只显示在应用程序屏幕中

标签 android filter apk system

我试图通过以下方式获取所有已安装的 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/

相关文章:

android - 何时在 Gradle 插件中应用自定义 Android 扩展?

javascript - 数据表过滤背景颜色的列

Django 'dynamic' 过滤

android - 如何签署我已经制作的 android app/.apk 文件

android - Google Play APK 扩展下载器库坏了?

android - 在 Android Studio 中哪里可以找到/设置 'Artifact'?

带有 setListAdapter 的 Android 异步类

android - 为什么没有嵌套时 Android lint 显示 "nested weights are bad for performance"?

android - Kotlin、Dagger、Nullable 和 Named 找不到 @Inject 的值

c# - 在 LINQ 中检查年龄过滤器的最短方法?