2016-09-10 2 views
1

В чем разница между requestedPermissions и permissions?PackageInfo: requestPermissions vs permissions

PackageInfo _pi = getPackageManager().getPackageInfo(this.getPackageName(), 
               PackageManager.GET_PERMISSIONS); 

// permissions 
PermissionInfo[] _permissions = _pi.permissions; 

// requestedPermissions 
String[] _requestedPermissions = _pi.requestedPermissions; 

Речь идет о разрешениях приложений и разрешениях ОС?

Благодаря

+1

Запрошенные разрешения, я считаю, являются разрешениями, которые запрашиваются, но не обязательно (еще) были предоставлены. 'PermissionInfo' о самом разрешении https://developer.android.com/reference/android/content/pm/PermissionInfo.html. См. Этот вопрос http://stackoverflow.com/q/18573139/1256219 для проверки запрашиваемых разрешений и подтверждения в комментариях – brandall

ответ

2

Как и в документации

общественного PermissionInfo []

Массив всех <permission> теги включены в <manifest>, или нуль, если не было ни одного.

и

ИНТ [] requestedPermissions

Массив всех <uses-permission> теги включены в <manifest> или нулевой если бы не было ни одного.

так permissionInfo будет иметь attributes в manifest тег в манифест, например,

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.androidtest" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name"> 

и

requstedPermissions возвратит разрешения в <uses-permission> теге, например

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
+1

Я не думаю, что вы правы. 'PermissionInfo' содержит информацию о самом разрешении? https://developer.android.com/reference/android/content/pm/PermissionInfo.html – brandall

+0

@brandall refer [this] (https://developer.android.com/reference/android/R.styleable.html#AndroidManifestPermission) – Nikhil

+0

Я думаю, что первая часть ('permissionInfo') неверна ... но вторая часть. Я нашел это из docs: 'permissionInfo' - это информация, которую вы можете получить о конкретном разрешении безопасности, известном системе. Это соответствует информации, полученной из тегов AndroidManifest.xml ''. https://stackoverflow.com/questions/14450839/ –

0

если вы хотите получить все разрешения предварительно проверены в манифесте вы должны использовать код ниже:

private bool PermissionInManifest (string permission) 
{ 
    var permissions = this.Activity.PackageManager.GetPackageInfo(this.Activity.PackageName, PackageInfoFlags.Permissions); 
    var requestedPermissions = permissions.RequestedPermissions.ToList(); 
    return requestedPermissions.Contains(permission); 
} 

, если вы хотите получить разрешение, предоставленное пользователем, или нет , вы можете использовать:

private bool PermissionGranted (string permission) 
{ 
    return this.Activity.PackageManager.CheckPermission (permission, this.Activity.PackageName) == Permission.Granted; 
} 
Смежные вопросы