1

Androidにはさまざまな権限グループと権限があります。各権限グループは、特定の権限を表します。しかし、各グループが保持している権限のリストが見つかりませんでした。どこかに掲載されていますか?

たとえば。android.permission.ACCOUNT_MANAGERは、権限グループACCOUNTSに関連付けられています。そのような関連のリストが必要です。

4

4 に答える 4

1

Androidの権限はここにリストされ、権限グループはここにリストされています。そして、PemissionInfo()も見ることができます。

于 2012-09-10T12:20:02.683 に答える
1

これは私がICSで作成したリストです。https://docs.google.com/spreadsheet/pub?key=0As7-0Nfn2fUTdEpXdHJIZVlUNWljb1RwTXVtREthSEE&single=true&gid=0&output=html

于 2012-09-20T15:43:11.973 に答える
1

PackageManager getAllPermissionGroups()およびqueryPermissionsByGroup()を使用して、Androidのアクセス許可階層全体を列挙することができます。以下のコードは、5.1.1(SDK 22)デバイスで最後に示す出力を生成しました。「個人」とマークされたグループはgroupInfo.flags==1であり、マシュマロで「危険」と呼ばれる許可グループに対応しているように見えます。

SDKレベルの違いと、アプリがカスタムアクセス許可を定義できるという事実により、デバイスごとに異なるアクセス許可階層が取得されます。

/**
 * Uses PackageManager getAllPermissionGroups() and queryPermissionsByGroup()
 * to enumerate the Android permission hierarchy.
 */
private void showPermissionTree()
{
    final PackageManager pm = m_context.getPackageManager();
    if (pm == null)
        return;

    /*
     * Get a list of all permission groups and sort them alphabetically.
     * Then add to the end of the list the special case of a null group name. There can be
     * numerous permissions that are not listed under a group name.
     */
    List<PermissionGroupInfo> groupInfoList = pm.getAllPermissionGroups(0);
    if (groupInfoList == null)
        return;

    ArrayList<String> groupNameList = new ArrayList<>();
    for (PermissionGroupInfo groupInfo : groupInfoList) {
        String groupName = groupInfo.name;
        if (groupName != null) {
            if (Build.VERSION.SDK_INT >= 17) {
                /*
                 * SDK 17 added the flags field. If non-zero, the permission group contains
                 * permissions that control access to user personal data.
                 * N.B. These are the permissions groups that are called "dangerous" in
                 * Marshmallow.
                 */
                if (groupInfo.flags != 0) {
                    groupName += " (personal)";
                }
            }
            groupNameList.add(groupName);
        }
    }

    Collections.sort(groupNameList);
    groupNameList.add(null);

    /*
     * Loop though each permission group, adding to the StringBuilder the group name and
     * the list of all permissions under that group.
     */
    StringBuilder sb = new StringBuilder(10000);
    final String INDENT = "   ";

    for (String groupName : groupNameList) {
        if (groupName == null)
            groupName = "null";

        sb.append("* ").append(groupName).append("\n");

        ArrayList<String> permissionNameList = getPermissionsForGroup(groupName);
        if (permissionNameList.size() > 0) {
            for (String permission : permissionNameList) {
                sb.append(INDENT).append(permission).append("\n");
            }
        } else {
            sb.append(INDENT).append("no permissions under group\n");
        }

        sb.append("\n");
    }

    m_textView.setText(sb.toString());
}


/*
 * Gets and returns a list of all permission under the specified group, sorted alphabetically.
 *
 * N.B. groupName can be null. The docs for PackageManager.queryPermissionsByGroup() say
 * "Use null to find all of the permissions not associated with a group."
 */
private ArrayList<String> getPermissionsForGroup(String groupName)
{
    final PackageManager pm = m_context.getPackageManager();
    final ArrayList<String> permissionNameList = new ArrayList<>();

    try {
        List<PermissionInfo> permissionInfoList =
                pm.queryPermissionsByGroup(groupName, PackageManager.GET_META_DATA);
        if (permissionInfoList != null) {
            for (PermissionInfo permInfo : permissionInfoList) {
                String permName = permInfo.name;
                if (permName == null) {
                    permName = "null";
                } else if (permName.isEmpty()) {
                    permName = "empty";
                }
                permissionNameList.add(permName);
            }
        }
    }
    catch (PackageManager.NameNotFoundException e) {
        // e.printStackTrace();
        Log.d(TAG, "permissions not found for group = " + groupName);
    }

    Collections.sort(permissionNameList);

    return permissionNameList;
}

* android.permission-group.ACCESSIBILITY_FEATURES
   グループの下に権限がありません

* android.permission-group.ACCOUNTS(個人)
   グループの下に権限がありません

* android.permission-group.AFFECTS_BATTERY
   android.permission.CHANGE_WIFI_MULTICAST_STATE
   android.permission.FLASHLIGHT
   android.permission.TRANSMIT_IR
   android.permission.VIBRATE
   android.permission.WAKE_LOCK

* android.permission-group.APP_INFO
   android.permission.GET_TASKS
   android.permission.KILL_BACKGROUND_PROCESSES
   android.permission.MANAGE_ACTIVITY_STACKS
   android.permission.PERSISTENT_ACTIVITY
   android.permission.REAL_GET_TASKS
   android.permission.RECEIVE_BOOT_COMPLETED
   android.permission.REMOVE_TASKS
   android.permission.REORDER_TASKS
   android.permission.RESTART_PACKAGES

* android.permission-group.AUDIO_SETTINGS
   android.permission.MODIFY_AUDIO_SETTINGS

* android.permission-group.BLUETOOTH_NETWORK
   android.permission.BLUETOOTH
   android.permission.BLUETOOTH_ADMIN
   android.permission.BLUETOOTH_MAP
   android.permission.BLUETOOTH_PRIVILEGED

* android.permission-group.BOOKMARKS(個人)
   グループの下に権限がありません

* android.permission-group.CALENDAR(個人)
   グループの下に権限がありません

* android.permission-group.CAMERA(個人)
   グループの下に権限がありません

* android.permission-group.COST_MONEY
   グループの下に権限がありません

* android.permission-group.DEVELOPMENT_TOOLS
   android.permission.ACCESS_ALL_EXTERNAL_STORAGE
   android.permission.CHANGE_CONFIGURATION
   android.permission.DUMP
   android.permission.READ_LOGS
   android.permission.SET_ALWAYS_FINISH
   android.permission.SET_DEBUG_APP
   android.permission.SET_PROCESS_LIMIT
   android.permission.SIGNAL_PERSISTENT_PROCESSES
   android.permission.WRITE_SECURE_SETTINGS
   com.android.chrome.permission.DEBUG

* android.permission-group.DEVICE_ALARMS(個人)
   グループの下に権限がありません

* android.permission-group.DISPLAY
   android.permission.SYSTEM_ALERT_WINDOW

* android.permission-group.HARDWARE_CONTROLS
   android.permission.ACCESS_FM_RADIO
   android.permission.ACCESS_MTP
   android.permission.HARDWARE_TEST
   android.permission.MANAGE_USB

* android.permission-group.LOCATION(個人)
   グループの下に権限がありません

* android.permission-group.MESSAGES(個人)
   グループの下に権限がありません

* android.permission-group.MICROPHONE(個人)
   グループの下に権限がありません

* android.permission-group.NETWORK
   android.permission.ACCESS_NETWORK_STATE
   android.permission.ACCESS_WIFI_STATE
   android.permission.ACCESS_WIMAX_STATE
   android.permission.BROADCAST_NETWORK_PRIVILEGED
   android.permission.CHANGE_NETWORK_STATE
   android.permission.CHANGE_WIFI_STATE
   android.permission.CHANGE_WIMAX_STATE
   android.permission.CONNECTIVITY_INTERNAL
   android.permission.DOWNLOAD_WITHOUT_NOTIFICATION
   android.permission.INTERNET
   android.permission.LOOP_RADIO
   android.permission.NFC
   android.permission.READ_WIFI_CREDENTIAL
   android.permission.RECEIVE_DATA_ACTIVITY_CHANGE
   android.permission.SCORE_NETWORKS
   com.android.vending.BILLING
   com.android.vending.CHECK_LICENSE
   com.google.android.c2dm.permission.RECEIVE
   com.google.android.c2dm.permission.SEND
   com.google.android.gtalkservice.permission.SEND_HEARTBEAT
   com.google.android.permission.BROADCAST_DATA_MESSAGE
   com.google.android.xmpp.permission.BROADCAST
   com.google.android.xmpp.permission.SEND_RECEIVE
   com.google.android.xmpp.permission.USE_XMPP_ENDPOINT
   com.google.android.xmpp.permission.XMPP_ENDPOINT_BROADCAST
   com.gsma.services.nfc.permission.TRANSACTION_EVENT

* android.permission-group.PERSONAL_INFO(個人)
   グループの下に権限がありません

* android.permission-group.PHONE_CALLS(個人)
   グループの下に権限がありません

* android.permission-group.SCREENLOCK(個人)
   グループの下に権限がありません

* android.permission-group.SOCIAL_INFO(個人)
   グループの下に権限がありません

*android.permission-group.STATUS_BAR
   android.permission.EXPAND_STATUS_BAR

* android.permission-group.STORAGE(個人)
   グループの下に権限がありません

* android.permission-group.SYNC_SETTINGS
   android.permission.READ_SYNC_SETTINGS
   android.permission.READ_SYNC_STATS
   android.permission.WRITE_SYNC_SETTINGS

*android.permission-group.SYSTEM_CLOCK
   android.permission.SET_TIME_ZONE

* android.permission-group.SYSTEM_TOOLS
   android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
   android.permission.ACCESS_MOCK_LOCATION
   android.permission.ACCESS_PDB_STATE
   android.permission.ASEC_ACCESS
   android.permission.ASEC_CREATE
   android.permission.ASEC_DESTROY
   android.permission.ASEC_MOUNT_UNMOUNT
   android.permission.ASEC_RENAME
   android.permission.BATTERY_STATS
   android.permission.BLUETOOTH_STACK
   android.permission.BROADCAST_PACKAGE_REMOVED
   android.permission.BROADCAST_STICKY
   android.permission.CHANGE_BACKGROUND_DATA_SETTING
   android.permission.CLEAR_APP_CACHE
   android.permission.DIAGNOSTIC
   android.permission.FORCE_STOP_PACKAGES
   android.permission.GET_APP_OPS_STATS
   android.permission.GET_DETAILED_TASKS
   android.permission.GET_PACKAGE_SIZE
   android.permission.GLOBAL_SEARCH
   android.permission.GLOBAL_SEARCH_CONTROL
   android.permission.INTERACT_ACROSS_USERS
   android.permission.INTERACT_ACROSS_USERS_FULL
   android.permission.MANAGE_USERS
   android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS
   android.permission.MOUNT_FORMAT_FILESYSTEMS
   android.permission.MOUNT_UNMOUNT_FILESYSTEMS
   android.permission.NET_ADMIN
   android.permission.NET_TUNNELING
   android.permission.OEM_UNLOCK_STATE
   android.permission.READ_DREAM_STATE
   android.permission.READ_SEARCH_INDEXABLES
   android.permission.RECOVERY
   android.permission.REMOTE_AUDIO_PLAYBACK
   android.permission.SET_ANIMATION_SCALE
   android.permission.SET_PREFERRED_APPLICATIONS
   android.permission.SET_SCREEN_COMPATIBILITY
   android.permission.SET_WALLPAPER_COMPONENT
   android.permission.START_ANY_ACTIVITY
   android.permission.START_TASKS_FROM_RECENTS
   android.permission.SUBSCRIBED_FEEDS_READ
   android.permission.SUBSCRIBED_FEEDS_WRITE
   android.permission.WRITE_APN_SETTINGS
   android.permission.WRITE_DREAM_STATE
   android.permission.WRITE_SETTINGS
   com.android.launcher.permission.INSTALL_SHORTCUT
   com.android.launcher.permission.UNINSTALL_SHORTCUT
   com.android.launcher3.permission.READ_SETTINGS
   com.android.launcher3.permission.WRITE_SETTINGS
   com.google.android.launcher.permission.READ_SETTINGS
   com.google.android.launcher.permission.WRITE_SETTINGS
   com.motorola.permission.ACCESS_COGRADIO

* android.permission-group.USER_DICTIONARY(個人)
   グループの下に権限がありません

* android.permission-group.VOICEMAIL(個人)
   グループの下に権限がありません

* android.permission-group.WALLPAPER
   android.permission.SET_WALLPAPER
   android.permission.SET_WALLPAPER_HINTS

*android.permission-group.WRITE_USER_DICTIONARY
   android.permission.WRITE_USER_DICTIONARY

* com.google.android.gms.permission.CAR_INFORMATION
   com.google.android.gms.permission.CAR_FUEL
   com.google.android.gms.permission.CAR_MILEAGE
   com.google.android.gms.permission.CAR_VENDOR_EXTENSION

* ヌル
   グループの下に権限がありません
于 2016-01-25T19:39:16.803 に答える
0

Googleは、パーミッションとパーミッショングループの関連付けに関する情報を提供します。 https://developer.android.com/guide/topics/permissions/overview#perm-groups

Android Studioターミナルでは、次のコマンドで情報を取得します。

adb shell pm list permissions -s

結果は次のようになります。

    All Permissions:
    
Microphone: record audio

SMS: read your text messages (SMS or MMS), receive text messages (WAP), receive text messages (MMS), receive text messages (SMS), send and view SMS messages, read cell broadcast messages

This app can provide content to Bixby Home cards.: Provide Bixby Home card content, Read Bixby Home data

アプリに必要なすべての権限をリクエストするように注意してください。正しく機能しているからといって、今後も機能し続けるとは限りません。権限はあるグループから別のグループに移動される可能性があるため、現在の状態に依存しないでください。

注意:Android SDKの将来のバージョンでは、特定の権限をあるグループから別のグループに移動する可能性があります。したがって、これらの権限グループの構造に基づいてアプリのロジックを作成しないでください。

たとえば、READ_CONTACTSは、Android 8.1(APIレベル27)のWRITE_CONTACTSと同じ権限グループにあります。アプリがREAD_CONTACTS権限を要求し、次にWRITE_CONTACTS権限を要求した場合、システムがWRITE_CONTACTS権限を自動的に付与できると想定しないでください。

于 2020-10-15T12:01:10.293 に答える