android - 获取具有特定权限的应用程序名称

标签 android android-manifest android-permissions

我想要设备上安装的所有应用程序的列表,这些应用程序使用特定权限,例如 INTERNET。

我正在使用此代码,但无法检索结果,请帮忙。

private ArrayList<String> getInstalledApps(Context context) {
    ArrayList<String> results = new ArrayList<String>();
    PackageManager packageManager = context.getPackageManager();
    List<PackageInfo> applist = packageManager.getInstalledPackages(0);
    Iterator<PackageInfo> it = applist.iterator();
    while (it.hasNext()) {
        PackageInfo pk = (PackageInfo) it.next();
        if (PackageManager.PERMISSION_GRANTED == packageManager.checkPermission(Manifest.permission.INTERNET, pk.packageName))
            results.add("" + pk.applicationInfo.loadLabel(packageManager));
    }

    for (int i = 0; i <= results.size(); i++) {
        Log.v("app using internet = ", results.toString());
    }

    return results;
}

最佳答案

我在 android 2.2 模拟器上试过代码,它工作正常。以下是工作代码:

private ArrayList<String> getInstalledApps(Context context) {
        ArrayList<String> results = new ArrayList<String>();
        PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> applist = packageManager.getInstalledPackages(0);
        Iterator<PackageInfo> it = applist.iterator();
        while (it.hasNext()) {
            PackageInfo pk = (PackageInfo) it.next();
            if ((pk.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                Log.v("system app using internet = ", ""+pk.applicationInfo.loadLabel(packageManager));
                continue;
            }
            if (PackageManager.PERMISSION_GRANTED == packageManager
                    .checkPermission(Manifest.permission.INTERNET,
                            pk.packageName))
                results.add("" + pk.applicationInfo.loadLabel(packageManager));
        }

        Log.v("app using internet = ", results.toString());

        return results;
    }

关于android - 获取具有特定权限的应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13026257/

相关文章:

android - 为什么我在cordova上打开软键盘时有白色区域?

Android 应用程序无法从 Play 商店下载到平板电脑上

java - 问 - 切换用户的全局设置(WiFi、位置等) - 2 个想法.. 有什么想法吗?

Android - 灰色背景而不是白色

android - 仅对较旧的 android 版本 : maxSdkVersion does not work? 需要权限

android - android.permission.WRITE_SETTINGS 是否只授予系统应用程序?

android.view.WindowManager$BadTokenException : Unable to add window android. view.ViewRootImpl$W@c745883 - 权限被拒绝

android - LiveData 和 MVVM 模式

android - Volley 在没有 ProgressDialog 的情况下工作,但似乎永远需要它

android - 在 Android 中,如何为 Rect 指定 X 和 Y 位置?