android api21下manifest中权限声明怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android api21下manifest中权限声明怎么写相关的知识,希望对你有一定的参考价值。

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下:
android.permission.ACCESS_CHECKIN_PROPERTIES
允 许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION
允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION
允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION
允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE
允许程序访问有关GSM网络信息(Allows applications to access information about networks)
android.permission.ACCESS_SURFACE_FLINGER
允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger’s low level features)
android.permission.ACCESS_WIFI_STATE
允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE
允许程序发布系统级服务(Allows an application to publish system-level services).
android.permission.BATTERY_STATS
允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)
android.permission.BLUETOOTH
允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)
android.permission.BLUETOOTH_ADMIN
允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)
android.permission.BRICK
请求能够禁用设备(非常危险)(Required to be able to disable the device (very *erous!).)
android.permission.BROADCAST_PACKAGE_REMOVED
允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)
android.permission.BROADCAST_STICKY
允许一个程序广播常用intents(Allows an application to broadcast sticky intents)
android.permission.CALL_PHONE
允 许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)
android.permission.CALL_PRIVILEGED
允 许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)
android.permission.CAMERA
请求访问使用照相设备(Required to be able to access the camera device. )
android.permission.CHANGE_COMPONENT_ENABLED_STATE
允 许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )
android.permission.CHANGE_CONFIGURATION
允许一个程序修改当前设置,如本地化(Allows an application to modify the current configuration, such as locale. )
android.permission.CHANGE_NETWORK_STATE
允许程序改变网络连接状态(Allows applications to change network connectivity state)
android.permission.CHANGE_WIFI_STATE
允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)
android.permission.CLEAR_APP_CACHE
允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )
android.permission.CLEAR_APP_USER_DATA
允许一个程序清除用户设置(Allows an application to clear user data)
android.permission.CONTROL_LOCATION_UPDATES
允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )
android.permission.DELETE_CACHE_FILES
允许程序删除缓存文件(Allows an application to delete cache files)
android.permission.DELETE_PACKAGES
允许一个程序删除包(Allows an application to delete packages)
android.permission.DEVICE_POWER
允许访问底层电源管理(Allows low-level access to power management)
android.permission.DIAGNOSTIC
允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )
android.permission.DISABLE_KEYGUARD
允许程序禁用键盘锁(Allows applications to disable the keyguard )
android.permission.DUMP
允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)
android.permission.EXPAND_STATUS_BAR
允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似windows mobile中的托盘程序(Allows an application to expand or collapse the status bar. )
android.permission.FACTORY_TEST
作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application, running as the root user. )
android.permission.FLASHLIGHT
访问闪光灯,android开发网提示htc Dream不包含闪光灯(Allows access to the flashlight )
android.permission.FORCE_BACK
允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )
android.permission.FOTA_UPDATE
暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS
访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)
android.permission.GET_PACKAGE_SIZE
允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )
android.permission.GET_TASKS
允 许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)
android.permission.HARDWARE_TEST
允许访问硬件(Allows access to hardware peripherals. )
android.permission.INJECT_EVENTS
允 许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)
android.permission.INSTALL_PACKAGES
允许一个程序安装packages(Allows an application to install packages. )
android.permission.INTERNAL_SYSTEM_WINDOW
允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )
android.permission.INTERNET
允许程序打开网络套接字(Allows applications to open network sockets)
android.permission.MANAGE_APP_TOKENS
允 许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )
android.permission.MASTER_CLEAR目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机
android.permission.MODIFY_AUDIO_SETTINGS
允许程序修改全局音频设置(Allows an application to modify global audio settings)
android.permission.MODIFY_PHONE_STATE
允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state – power on, mmi, etc. )
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )
android.permission.PERSISTENT_ACTIVITY
允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )
android.permission.PROCESS_OUTGOING_CALLS
允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)
android.permission.READ_CALENDAR
允许程序读取用户日历数据(Allows an application to read the user’s calendar data.)
android.permission.READ_CONTACTS
允许程序读取用户联系人数据(Allows an application to read the user’s contacts data.)
android.permission.READ_FRAME_BUFFER
允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)
android.permission.READ_INPUT_STATE
允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )
android.permission.READ_LOGS
允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )
android.permission.READ_OWNER_DATA
允许程序读取所有者数据(Allows an application to read the owner’s data)
android.permission.READ_SMS
允许程序读取短信息(Allows an application to read SMS messages.)
android.permission.READ_SYNC_SETTINGS
允许程序读取同步设置(Allows applications to read the sync settings)
android.permission.READ_SYNC_STATS
允许程序读取同步状态(Allows applications to read the sync stats)
android.permission.REBOOT
请求能够重新启动设备(Required to be able to reboot the device. )
android.permission.RECEIVE_BOOT_COMPLETED
允 许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )
android.permission.RECEIVE_MMS
允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )
android.permission.RECEIVE_SMS
允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)
android.permission.RECEIVE_WAP_PUSH

附上出处链接:http://www.cnblogs.com/hnrainll/archive/2011/10/26/2225721.html
参考技术A 权限声明的书写方式和4.3之前是一样的,只不过在有些地方需要重新判断用户允许该权限,加了很多的判断而已。

Android - 在没有提示的情况下拒绝相机权限

【中文标题】Android - 在没有提示的情况下拒绝相机权限【英文标题】:Android - Camera permissions denied without prompting 【发布时间】:2017-08-29 23:35:59 【问题描述】:

我在请求权限背后的手动过程中遇到了问题(只是一直陷入“拒绝”代码),所以我改用 Dexter 来简化。我在 onCreate() 中实现了以下代码,并重新安装了应用程序:

Dexter.withActivity(this)
            .withPermission(Manifest.permission.CAMERA)
            .withListener(new PermissionListener() 
                @Override public void onPermissionGranted(PermissionGrantedResponse response) 
                    Log.d(TAG, "GRANTED!");
                    initCamera();
                
                @Override public void onPermissionDenied(PermissionDeniedResponse response) 
                    Log.d(TAG, "DENIED!");
                
                @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) 
                    Log.d(TAG, "PERMISSION RATIONAL SHOULD BE SHOWN!");

                
            ).check();

它立即陷入“拒绝!”登录,它甚至从不提示我。我尝试了这个特定的代码来尝试多个权限(这最终是我需要做的):

Dexter.withActivity(activity)
            .withPermissions(Manifest.permission.CAMERA,
                    Manifest.permission.RECORD_AUDIO,
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE)
            .withListener(new MultiplePermissionsListener() 
                @Override
                public void onPermissionsChecked(MultiplePermissionsReport report) 
                    Log.d(TAG, "Accepted: " + report.getGrantedPermissionResponses().size() + " | Denied: " + report.getDeniedPermissionResponses().get(0).getPermissionName());
                

                @Override
                public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) 
                    Log.d(TAG, "continuing permissions request..");

                    token.continuePermissionRequest();
                
            )
            .check();

它会提示您授予录制音频的权限,然后询问是否可以访问设备上的照片/媒体/文件(它从不询问相机)。然后一旦完成,它会打印日志:“Accepted 3 | Denied: android.permission.CAMERA”。它甚至没有再次提示我就否认了。

我的清单已正确设置,以便将 CAMERA 放置在正确的位置(在“应用程序”标签之外)。参考如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.app">

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

<permission
    android:name="$applicationId.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
etc..

奇怪的是,当我进入“设置”>“应用程序”>“我的应用程序”时,相机选项甚至没有显示在那里。

我认为这不是 Dexter 的问题,因为当我手动设置它时,它的作用基本相同(在查看了一些*** SO 帖子后,我确认在这种情况下它肯定设置正确)。

对这里可能出现的问题有什么想法吗?仅供参考 - 我使用的是 Galaxy S6,操作系统 6.0.2。遇到这种情况的其他用户似乎是其他具有 6.0+ 操作系统的设备。提前致谢!

编辑: 测试各种设备,它适用于某些设备,不适用于某些设备:

Moto X (OS 5.0) - 坏了 Nexus 5 (OS 7.0) - 工作 三星 S6 (OS 6.0.1) - 坏了 损坏的 Moto X (OS 6.0) - 工作

似乎不是一个固定的模式.. 绝对奇怪。我还开始了一个全新的项目并运行相同的代码 - 工作正常并允许访问我的相机。所以它似乎不是完全特定于设备的..

【问题讨论】:

您是否卸载了该应用并尝试过? 是的,我已经尝试卸载/重新安装应用程序,重新启动设备等。问题仍然存在。 :( 【参考方案1】:

这个问题原来是第三方库,在他们的清单中有这行,覆盖了我们自己的权限:

<uses-permission android:name="android.permission.CAMERA" tools:node="remove" />

解决方案是手动将他们的项目作为模块导入(而不是使用 gradle),然后注释掉该行,或者更简单 - 您可以在末尾添加“tools:node="replace"”主项目的 CAMERA 权限行,之后就可以正常工作了;后一种方法不需要导入项目。

【讨论】:

第三方是指 Dexter 还是其他库? 导致此问题的库实际上是 Kite.ly。 github.com/OceanLabs/Android-Print-SDK【参考方案2】:

您需要的是原生运行时权限而不是 dexter,从 Android 6.0(API 级别 23)开始,用户在应用运行时授予应用权限,而不是在安装应用时。这种方法简化了应用程序安装过程,因为用户在安装或更新应用程序时不需要授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机而不是设备位置。用户可以通过进入应用程序的设置屏幕随时撤销权限。

// Assume thisActivity is the current activity int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.YOUR_PERMISSION);

那么,如果该检查为假,您需要请求某个权限,

 ActivityCompat.requestPermissions(thisActivity,
            new String[]Manifest.permission.YOUR_PERMISSION,
            MY_PERMISSION_CODE);

根据您已经展示的内容,您还需要在清单中声明它们。 For more information.

【讨论】:

感谢您的回复,但是是的,我最初按照您指定的方式进行了设置,但问题仍然存在,与 Dexter 的情况完全相同。此外,我看到 Dexter 库经常更新,在他们的文档中我没有看到它不支持 6.0+。因此,如果它不支持它,我会感到惊讶。我使用它的方式不是在应用启动时;我在活动启动时使用它,它的处理方式与手动操作相同。另外,请在我的帖子中查看详细信息 - 相机权限甚至不是“设置”中的选项。想法? 在您的问题中发布您的完整错误,以便进行进一步分析。\ 对不起,我不确定还能发布什么?没有错误;它只是返回相机的拒绝状态,而不是其他权限。它为 Dexter 和手动执行此操作。让我知道我是否可以发布任何其他信息。除了我发布的内容,我不知道还有什么要分享的。 您之前说过您使用的是运行时权限,通常它会为任何给定的错误提供详细的错误消息。 您提出的一个关键点是,此错误仅在 api 级别 >= 6.0+ 的设备上持续存在,因此它是运行时权限,我遇到了同样的问题。某处可能还有另一个错误。

以上是关于android api21下manifest中权限声明怎么写的主要内容,如果未能解决你的问题,请参考以下文章

qt android 7 应该怎么加权限

以编程方式从 android 中的 manifest.xml 检索权限

Android权限错误即使在manifest.xml中声明

从manifest android中删除额外的不需要的权限

[android开发篇] 权限列表

在manifest中添加权限和在untiy中android的sd卡的根目录