Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取应用程序的所有授予权限_Android - Fatal编程技术网

Android 如何获取应用程序的所有授予权限

Android 如何获取应用程序的所有授予权限,android,Android,我想获得所有授予的权限。我知道我可以通过packageinfo获得所有请求的权限。requestedPermissions但我想知道授予的权限列表,并且在android M的情况下,授予的权限可以比请求的权限小。所以我只想知道有没有办法获得所有授予权限的列表 我知道从请求的权限列表中,我可以检查该权限是否已授予,但我想知道所有已授予权限的列表。不希望检查每个请求的权限。您可以逐个检查权限并添加到列表中: //我们应该解释一下吗 List<String> listPer

我想获得所有授予的权限。我知道我可以通过packageinfo获得所有请求的权限。requestedPermissions但我想知道授予的权限列表,并且在android M的情况下,授予的权限可以比请求的权限小。所以我只想知道有没有办法获得所有授予权限的列表


我知道从请求的权限列表中,我可以检查该权限是否已授予,但我想知道所有已授予权限的列表。不希望检查每个请求的权限。

您可以逐个检查权限并添加到列表中:

//我们应该解释一下吗

        List<String> listPermissionsNeeded = new ArrayList<>();
        // No explanation needed, we can request the permission.
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.GET_ACCOUNTS)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.GET_ACCOUNTS);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
        }
        if (!listPermissionsNeeded.isEmpty()) {
            ActivityCompat.requestPermissions(context,
                    listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),
                    MY_PERMISSIONS_REQUEST_MULTIPLE_PERMISSION);
        }
List-listPermissionsNeed=new-ArrayList();
//不需要解释,我们可以申请许可。
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.写入(外部存储)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.WRITE\u外部存储);
}
如果((ContextCompat.checkSelfPermission)(上下文,
Manifest.permission.GET_帐户)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.GET\u帐户);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.访问(位置)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.ACCESS\u位置);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.访问(位置)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.ACCESS\u FINE\u位置);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单。权限。读取(电话状态)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.READ\u PHONE\u STATE);
}
如果(!ListPermissionsNeed.isEmpty()){
ActivityCompat.requestPermissions(上下文,
ListPermissionsNeed.toArray(新字符串[ListPermissionsNeed.size()]),
我的\u权限\u请求\u多个\u权限);
}

您可以逐个检查权限并添加到列表中:

//我们应该解释一下吗

        List<String> listPermissionsNeeded = new ArrayList<>();
        // No explanation needed, we can request the permission.
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.GET_ACCOUNTS)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.GET_ACCOUNTS);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        if((ContextCompat.checkSelfPermission(context,
                Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED))
        {
            listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
        }
        if (!listPermissionsNeeded.isEmpty()) {
            ActivityCompat.requestPermissions(context,
                    listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),
                    MY_PERMISSIONS_REQUEST_MULTIPLE_PERMISSION);
        }
List-listPermissionsNeed=new-ArrayList();
//不需要解释,我们可以申请许可。
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.写入(外部存储)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.WRITE\u外部存储);
}
如果((ContextCompat.checkSelfPermission)(上下文,
Manifest.permission.GET_帐户)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.GET\u帐户);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.访问(位置)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.ACCESS\u位置);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单.权限.访问(位置)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.ACCESS\u FINE\u位置);
}
如果((ContextCompat.checkSelfPermission)(上下文,
清单。权限。读取(电话状态)
!=PackageManager.许可(已授予)
{
listPermissionsNeed.add(Manifest.permission.READ\u PHONE\u STATE);
}
如果(!ListPermissionsNeed.isEmpty()){
ActivityCompat.requestPermissions(上下文,
ListPermissionsNeed.toArray(新字符串[ListPermissionsNeed.size()]),
我的\u权限\u请求\u多个\u权限);
}

一个简单的函数,返回为给定包请求和授予的所有权限,如下所示:

List<String> getGrantedPermissions(final String appPackage) {
    List<String> granted = new ArrayList<String>();
    try {
        PackageInfo pi = getPackageManager().getPackageInfo(appPackage, PackageManager.GET_PERMISSIONS);
        for (int i = 0; i < pi.requestedPermissions.length; i++) {
            if ((pi.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
                granted.add(pi.requestedPermissions[i]);
            }
        }
    } catch (Exception e) {
    }
    return granted;
}
列出getGrantedPermissions(最终字符串appPackage){
授予的列表=新的ArrayList();
试一试{
PackageInfo pi=getPackageManager().getPackageInfo(appPackage,PackageManager.GET_权限);
for(int i=0;i

请注意,这需要API级别16或更高,但希望这不会成为当今的问题。

一个简单的函数,返回为给定包请求和授予的所有权限,可以如下所示:

List<String> getGrantedPermissions(final String appPackage) {
    List<String> granted = new ArrayList<String>();
    try {
        PackageInfo pi = getPackageManager().getPackageInfo(appPackage, PackageManager.GET_PERMISSIONS);
        for (int i = 0; i < pi.requestedPermissions.length; i++) {
            if ((pi.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
                granted.add(pi.requestedPermissions[i]);
            }
        }
    } catch (Exception e) {
    }
    return granted;
}
列出getGrantedPermissions(最终字符串appPackage){
授予的列表=新的ArrayList();
试一试{
PackageInfo pi=getPackageManager().getPackageInfo(appPackage,PackageManager.GET_权限);
for(int i=0;i

请注意,这需要API级别16或更高,但希望这不会成为当前的问题。

我看不出编写一个循环来迭代
requestedPermissions
并检查相应的
requestedPermissionsFlags
元素是否包含