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