获取具有特定权限的应用程序名称 [英] Get application names with specific permission

查看:160
本文介绍了获取具有特定权限的应用程序名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想安装的使用特定的权限,如互联网设备上的所有应用程序列表。

我用这code,但无法检索的结果,请大家帮忙。

 私人的ArrayList<字符串> getInstalledApps(上下文的背景下){
    ArrayList的<字符串>结果=新的ArrayList<字符串>();
    PackageManager packageManager = context.getPackageManager();
    名单< PackageInfo> APPLIST = packageManager.getInstalledPackages(0);
    迭代器< PackageInfo>它= applist.iterator();
    而(it.hasNext()){
        PackageInfo PK =(PackageInfo)it.next();
        如果(PackageManager.PERMISSION_GRANTED == packageManager.checkPermission(Manifest.permission.INTERNET,pk.packageName))
            results.add(+ pk.applicationInfo.loadLabel(packageManager));
    }

    的for(int i = 0; I< = results.size();我++){
        Log.v(,results.toString使用互联网=程序());
    }

    返回结果;
}
 

解决方案

我试过code在Android 2.2模拟器,这是工作的罚款。以下是工作code:

 私人的ArrayList<字符串> getInstalledApps(上下文的背景下){
        ArrayList的<字符串>结果=新的ArrayList<字符串>();
        PackageManager packageManager = context.getPackageManager();
        名单< PackageInfo> APPLIST = packageManager.getInstalledPackages(0);
        迭代器< PackageInfo>它= applist.iterator();
        而(it.hasNext()){
            PackageInfo PK =(PackageInfo)it.next();
            如果((pk.applicationInfo.flags&安培;!ApplicationInfo.FLAG_SYSTEM)= 0){
                Log.v(使用互联网=系统应用,+ pk.applicationInfo.loadLabel(packageManager));
                继续;
            }
            如果(PackageManager.PERMISSION_GRANTED == packageManager
                    .checkPermission(Manifest.permission.INTERNET,
                            pk.packageName))
                results.add(+ pk.applicationInfo.loadLabel(packageManager));
        }

        Log.v(,results.toString使用互联网=程序());

        返回结果;
    }
 

I want list of all applications installed on the device which use a specific permission like INTERNET.

i am using this code , but not able to retrieve results , please help .

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;
}

解决方案

I tried the code on android 2.2 emulator and it was working fine. Following is the working code:

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;
    }

这篇关于获取具有特定权限的应用程序名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆