当前位置:首页 » 安卓系统 » android自定义permission

android自定义permission

发布时间: 2022-12-14 14:02:18

Ⅰ Android自定义动态壁纸开发

看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。

如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。

动态壁纸的本质其实就是一个服务在维护一个动态壁纸引擎Engine,所以我们看到的动态效果其实是通过这个引擎画出来的。而维护这个引擎的服务,就是WallpaperService。本篇文章并不讨论内部实现原理,只是让大家知道如何去实现动态壁纸,所以就不详细说了。

大体上可分为三个步骤:

创建自定义WallpaperService继承WallpaperService
在Manifest中注册该Service并添加相关属性
创建所需要的xml文件
1.创建自定义WallpaperService

2.Manifest注册

一定要添加的几个地方:permission、intent-filter、meta-data。

3.创建需要的xml文件

这个xml文件就是Manifest中meta-data中的resource需要的文件:

需要注意第二个属性:settingsActivity,这个属性可以设置也可以不设置,他是启动一个设置动态壁纸的界面,一般情况下其实用不到这个界面,我们一般会使用PreferenceActivity去实现。下面是添加该属性和不添加该属性的区别:

完成这些之后,就是我们设计动态壁纸的时候了。回到自定义的Wallpaper类中:

我们当时在类中自定义了一个内部类MyEngine继承自Engine。这个Engine就是用来绘制的。关于Engine的几个主要方法如下:

onOffsetsChanged要注意一下,还记得有的手机滑动桌面时候背景图片会跟着左右移动吗,这个方法就可以实现这个效果,在手势滑动的每一帧都会回调依次。一下是个人理解的参数的含义:

xOffset:x方向滑动的百分比(与桌面分页数有关)

yOffset:y方向滑动百分比(一般用不到)

xOffsetStep:x方向每个分页所占的百分比(1 / xOffsetStep = 桌面的分页数)

yOffsetStep:同

xPixelOffset:x放下像素偏移量

y。。。。。
4.绘制。

实现绘制的方式,就跟SurfaceView的绘制一样了:

我只是简单的话了一个红色背景,效果如下:

当然可以实现很多不同的效果,这个就根据不同的需求去实现了。

Ⅱ 针对android 有哪些关于访问访问方面的权限

Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。系统和应用之间的安全性是通过Linux的facilities(工具,功能)在进程级别来强制实现的,比如会给应用程序分配user ID和Group ID。更细化的安全特性是通过"Permission"机制对特定的进程的特定的操作进行限制,而"per-URI permissions"可以对获取特定数据的access专门权限进行限制。

安全架构
Android安全架构中一个中心思想就是:应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。这包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件,网络连接,保持设备处于非睡眠状态。

一个应用程序的进程就是一个安全的沙盒。它不能干扰其它应用程序,除非显式地声明了"permissions",以便它能够获取基本沙盒所不具备的额外的能力。它请求的这些权限"permissions"可以被各种各样的操作处理,如自动允许该权限或者通过用户提示或者证书来禁止该权限。应用程序需要的那些"permissions"是静态的在程序中声明,所以他们会在程序安装时就被知晓,并不会再改变。

应用程序签名
所有的Android应用程序(.apk文件)必须用证书进行签名认证,而这个证书的私钥是由开发者保有的。该证书可以用以识别应用程序的作者。该证书也不需要CA签名认证(注:CA就是一个第三方的证书认证机构,如verisign等)。Android应用程序允许而且一般也都是使用self-signed证书(即自签名证书)。证书是用于在应用程序之间建立信任关系,而不是用于控制程序是否可以安装。签名影响安全性的最重要的方式是通过决定谁可以进入基于签名的permisssions,以及谁可以share 用户IDs。

用户IDs和文件存取
每一个Android应用程序(.apk文件)都会在安装时就分配一个独有的Linux用户ID,这就为它建立了一个沙盒,使其不能与其他应用程序进行接触(也不会让其它应用程序接触它)。这个用户ID会在安装时分配给它,并在该设备上一直保持同一个数值。

由于安全性限制措施是发生进程级,所以两个package中的代码不会运行在同一个进程当中,他们要作为不同的Linux用户出现。我们可以通过使用AndroidManifest.xml文件中的manifest标签中的sharedUserId属性,来使不同的package共用同一个用户ID。通过这种方式,这两个package就会被认为是同一个应用程序,拥有同一个用户ID(实际不一定),并且拥有同样的文件存取权限。注意:为了保持安全,只有当两个应用程序被同一个签名签署的时候(并且请求了同一个sharedUserId)才会被分配同样的用户ID.

所有存储在应用程序中的数据都会赋予一个属性-该应用程序的用户ID,这使得其他package无法访问这些数据。当通过这些方法getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)来创建一个新文件时,你可以通过使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE标志位来设置是否允许其他package来访问读写这个文件。当设置这些标志位时,该文件仍然属于该应用程序,但是它的global read and/or write权限已经被设置,使得它对于其他任何应用程序都是可见的。

Using Permissions 使用权限
一个基本的Android程序通常是没有任何permissions与之关联的,这就是说它不能做任何扰乱用户或破坏数据的勾当。那么为了使用设备被保护的features,我们就必须在AndroidManifest.xml添加一个或多个<uses-permission> 标签,用以声明你的应用程序需要的permissions.
下面是个例子

For example, an application that needs to monitor incoming SMS messages would specify:
Xml代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RECEIVE_SMS" /> ... </manifest>

应用程序安装的时候,应用程序请求的permissions是通过package installer来批准获取的。package installer是通过检查该应用程序的签名和/或用户的交换结果来确定是否给予该程序request的权限。在用户使用过程中不会去检查权限,也就是说要么在安装的时候就批准该权限,使其按照设计可以使用该权限;要么就不批准,这样用户也就根本无法使用该feature,也不会有任何提示告知用户尝试失败。

很多时候, 一个permission failure会导致一个SecurityException被抛回该应用程序. 但是Android并不保证这种情况会处处发生。例如,当数据被deliver到每一个receiver的时候,sendBroadcast(Intent) 方法会去检查permissions,在这个方法调用返回之后,你也不会收到任何exception。几乎绝大多数情况,一个permission failure都会打印到log当中。

Android系统定义的权限可以在Manifest.permission中找到。任何一个程序都可以定义并强制执行自己独有的permissions,因此Manifest.permission中定义的permissions并不是一个完整的列表(即有肯能有自定义的permissions)。

一个特定的permission可能会在程序操作的很多地方都被强制实施:
当系统有来电的时候,用以阻止程序执行其它功能;
启动一个activity的时候,会控制谁可以启动你的Acitivity;
在发送和接收广播的时候,去控制谁可以接收你的广播或谁可以发送广播给你;
当进入并操作一个content provider的时候;
当绑定或开始一个service的时候。

声明和使用Permissions
为了实现你自己的permissions,你必须首先在AndroidManifest.xml文件中声明该permissions.通常我们通过使用一到多个<permission> tag来进行声明。
下面例子说明了一个应用程序它想控制谁才可以启动它的Activity:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.me.app.myapp" > <permissionandroid:name="com.me.app.myapp.permission.DEADLY_ACTIVITY" android:label="@string/permlab_deadlyActivity"android:description="@string/permdesc_deadlyActivity" android:permissionGroup="android.permission-group.COST_MONEY" android:protectionLevel="dangerous" /> ... </manifest>
这里<protectionLevel>属性是需要声明的(通常系统自有的permission都会有它对应的protection level,而我们自己定义的permission一般都需要定义protecdtion level, 若不去定义,则默认为normal)。通过声明该属性,我们就可以告知系统如何去通告用户以及通告哪些内容,或者告知系统谁才可以拥有该permission。具体请参看链接的文档。
这我多说两句啊,这个protectionLevel分四个等级,分别是Normal, Dangerous, Signature, SignatureOrSystem,越往后安全等级越高。
这个<permissionGroup>属性是可选项, 只是用于帮助系统显示permissions给用户(实际是告知系统该permission是属于哪个permission group的)。你通常会选择使用标准的system group来设定该属性,或者用你自己定义的group(更为罕见)。通常使用一个已经存在的group会更合适,因为这样UI显示的时候会更简单。
需要注意的是label和description都是需要为permission提供的。这些都是字符串资源,当用户去看permission列表(android:label)或者某个permission的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该permission是在保护什么功能就行。而description可以用于具体描述获取该permission的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述permission,第一句描述该permission,第二句警告用户如果批准该权限会可能有什么不好的事情发生。下面是一个描述CALL_PHONE permission的label和description的例子:
<string name="permlab_callPhone">directly call phone numbers</string> <string name="permdesc_callPhone">Allows the application to call phone numbers without your intervention. Malicious applications may cause unexpected calls on your phone bill. Note that this does not allow the application to call emergency numbers.</string>
你可以通过shell指令 adb shell pm list permissions 来查看目前系统已有的permissions. 特别的,"-s"选项会以一种用户会看到的格式一样的格式来显示这些permissions.

在AndroidManifest.xml中强制使用Permissions
通过AP的AndroidManifest.xml文件可以设置该AP中各个组件的访问权限,包括Activity,
Service,BroadcastReceiver,ContentProvider。这些组件中都包含android:permission属性,设置这个属性就可以控制访问该组件的权限。

Activity permissions权限限制了谁才可以启动相应的activity。Permission会在Context.startActivity()和Activity.startActivityForResult()的时候进行检查,如果caller没有所需的权限,则会抛出一个SecurityException。

Service permissions用于限制谁才可以start或bind该service。在Context.startService() , Context.stopService() 和 Context.bindService() 调用的时候会进行权限检查。如果caller没有所需的权限,则会抛出一个SecurityException。

BroadcastReceiver permissions用于限制谁才可以向该receiver发送广播。权限检查会在Context.sendBroadcast() 返回时进行,由系统去发送已经提交的广播给相应的Receiver。最终,一个permission failure不会再返回给Caller一个exception;它只是不会去deliver该Intent而已。同样地,Context.registerReceiver() 也可以有自己permission用于限制谁才可以向一个在程序中注册的receiver发送广播。另一种方式是,一个permission也可以提供给Context.sendBroadcast() 用以限制哪一个BroadcastReceiver才可以接收该广播。

ContentProvider permission用于限制谁才可以访问ContentProvider提供的数据。(Content providers有一套另外的安全机制叫做URI permissions,这些在稍后讨论)不同于其它的Components,这里有两种不同的permission属性可以设置: android:readPermission 用于限制谁可以读取provider中的数据,而 android:writePermission 用于限制谁才可以向provider中写入数据。需要注意的是如果provider既被read permission保护,也被write permission保护的话,如果这时只有write permission并不意味着你就可以读取provider中的数据了。当你第一次获取provider的时候就要进行权限检查(如果你没有任何permission,则会抛出SecurityException)。当使用ContentResolver.query() 时需要读权限,而当使用 ContentResolver.insert() , ContentResolver.update() , ContentResolver.delete() 时需要写权限。在所有这些情况下,没有所需的permission将会导致SecurityException被抛出。

在Sending Broadcasts时强制使用Permissions
除了之前说过的Permission(用于限制谁才可以发送广播给相应的broadcastReceiver),你还可以在发送广播的时候指定一个permission。在调用Context.sendBroadcast() 的时候使用一个permission string,你就可以要求receiver的宿主程序必须有相应的permission。值得注意的是Receiver和broadcaster都可以要求permission。当这种情况发生时,这两种permission检查都需要通过后才会将相应的intent发送给相关的目的地。

其它强制使用Permissions的方式
在调用service的过程中可以设置任意的fine-grained permissions(这里我理解的是更为细化的权限)。这是通过Context.checkCallingPermission(String) 方法来完成的。呼叫的时候使用一个想得到的permission string,并且当该权限获批的时候可以返回给呼叫方一个Integer(没有获批也会返回一个Integer)。需要注意的是这种情况只能发生在来自另一个进程的呼叫,通常是一个service发布的IDL接口或者是其他方式提供给其他的进程。

Android提供了很多其他的方式用于检查permissions。如果你有另一个进程的pid,你就可以通过context method Context.checkPermission(String, int, int) 去针对那个pid去检查permission。如果你有另一个应用程序的package name,你可以直接用PackageManager method PackageManager.checkPermission(String, String) 来确定该package是否已经拥有了相应的权限。

URI Permissions
到目前为止我们讨论的标准的permission系统对于content provider来说是不够的。一个content provider可能想保护它的读写权限,而同时与它对应的直属客户端也需要将特定的URI传递给其它应用程序,以便其它应用程序对该URI进行操作。一个典型的例子就是邮件程序处理带有附件的邮件。进入邮件需要使用permission来保护,因为这些是敏感的用户数据。然而,如果有一个指向图片附件的URI需要传递给图片浏览器,那个图片浏览器是不会有访问附件的权利的,因为他不可能拥有所有的邮件的访问权限。

针对这个问题的解决方案就是per-URI permission: 当启动一个activity或者给一个activity返回结果的时候,呼叫方可以设置Intent.FLAG_GRANT_READ_URI_PERMISSION 和/或 Intent.FLAG_GRANT_WRITE_URI_PERMISSION . 这会使接收该intent的activity获取到进入该Intent指定的URI的权限,而不论它是否有权限进入该intent对应的content provider。

这种机制允许一个通常的capability-style模型, 这种模型是以用户交互(如打开一个附件, 从列表中选择一个联系人)为驱动,特别获取更细粒化的权限。这是一种减少不必要权限的重要方式,这种方式主要针对的就是那些和程序的行为直接相关的权限。
这些URI permission的获取需要content provider(包含那些URI)的配合。强烈推荐在content provider中提供这种能力,并通过android:grantUriPermissions 或者<grant-uri-permissions> 标签来声明支持。
更多的信息可以参考Context.grantUriPermission() , Context.revokeUriPermission() , and Context.checkUriPermission() methods.
转载

Ⅲ android permission怎么添加

java"><?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="

package="com.android.myapplication">

<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.READ_LOGS"/>
<uses-permissionandroid:name="android.permission.VIBRATE"/>

<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activityandroid:name=".MainActivity">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

</manifest>

Android6.0开始,对安全性要求较高的权限,在Manifest中声明后,还需要对权限进行动态请求授权。

Ⅳ Android 简单的图片查看器

说明:在文件管理器中,可以使用这个app来打开图片

ImageView 常用的一些XML属性和方法:

支持的scaleType 属性:

在打开图片的Activity里需要必须设置以下三个属性:

可以通过设置 mimeType 来关联对应的类型,比如: mimeType="vedio/* 关联视频格式的文件等。

详细可以参考: Android 常用 mimeType 表

读取图片,需要写入到外部存储器(SD卡)的权限:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

如果是 API23 以上还需要动态权限:

自定义权限的格式: 包名.permission.权限名
自定义权限需要在 Manifest 文件里使用 <permission android:name="..." /> 语法 进行注册。
PackageManager.PERMISSION_GRANTED 表示权限允许; PackageManager.PERMISSION_DENIED 表示权限拒绝。

Ⅳ Android权限机制

我们知道 Android 应用程序是沙箱隔离的,每个应用都有一个只有自己具有读写权限的专用数据目录。但是如果应用要访问别人的组件或者一些设备上全局可访问的资源,这时候权限机制就能系统化地规范并强制各类应用程序的行为准则。

Android 安全性概览

在 Android 中,一个权限,本质上是一个字符串,一个可以表示执行特定操作的能力的字符串。比如说:访问 SD 卡的能力,访问通讯录的能力,启动或访问一个第三方应用中的组件的能力。 权限被授予了之后,首先会在内存和本地中有记录,这在调用系统binder服务和其他应用组件时做鉴权依据,比如调用系统binder服务时会通过Binder.getCallingUid()拿到调用者的Uid,而Uid一般都是与应用包名一一对应的,再拿这个Uid到PMS里去查这个应用对应的权限。 其次会按被授予的权限将应用分到某个组。 可以参考 https://www.jianshu.com/p/a17c8bed79d9

自定义权限的应用场景在于限制其它应用对本应用四大组件的访问。具体用法可以参考 https://www.cnblogs.com/aimqqroad-13/p/8927179.html

pm list permissions -f 命令可以详细查看 Android 所有预定义的权限。

更详细的权限信息参考 https://developer.android.com/reference/android/Manifest.permission?hl=zh-cn#WRITE_EXTERNAL_STORAGE

可以看到一个权限的信息包括:定义的包名、标签、描述、 权限组 保护级别

权限根据设备的功能或特性分为多个组。如果应用已在相同权限组中被授予另一危险权限,系统将立即授予该权限,如READ_CONTACTS和WRITE_CONTACTS。

SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 由于其特殊性,其申请方式与其它权限都不同。

其授予流程如下:

(关于 AppOpsManager 是什么可以参考: https://segmentfault.com/a/1190000009214983 )

这里简要分析下ActivityCompat#requestPermissions的流程:

更详细的权限授予流程源码分析可以参考: https://segmentfault.com/a/1190000009214983

普通权限: 清单文件中声明即可。

危险权限: 方式一: pm grant application_package android.permission.CHANGE_CONFIGURATION 方式二:appops set application_package permission_num 0/1

appops可以授予的权限参考 android.app.AppOpsManager 中的声明

系统签名权限: 方式一:将app迁移到system/priv-app目录中。 方式二:看不懂,参考 https://blog.csdn.net/abcd_3344_abcd/article/details/50698759

android 4.4 访问sd卡需要申请权限。 您的应用在 Android 4.4 上运行时无法读取外部存储空间上的共享文件,除非您的应用具有 READ_EXTERNAL_STORAGE 权限。也就是说,没有此权限,您无法再访问 () 返回的目录中的文件。但是,如果您仅需要访问 getExternalFilesDir() 提供的您的应用特有目录,那么,您不需要 READ_EXTERNAL_STORAGE `权限。

android 6.0 运行时权限。 此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。 对于以 Android 6.0(API 级别 23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。要确定您的应用是否已被授予权限,请调用新增的 checkSelfPermission() 方法。要请求权限,请调用新增的 requestPermissions() 方法。即使您的应用并不以 Android 6.0(API 级别 23)为目标平台,您也应该在新权限模式下测试您的应用。 如需了解有关在您的应用中支持新权限模式的详情,请参阅 使用系统权限 。如需了解有关如何评估新模式对应用的影响的提示,请参阅 权限最佳做法 。

android 7.+ 应用间共享文件要使用FileProvider。 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file://URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。 要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider `类。如需了解有关权限和共享文件的详细信息,请参阅 共享文件 。

android 8.+
同一权限组的权限在被授予了之后也需要显式的再申请一次。
在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。 对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准。 例如,假设某个应用在其清单中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 。应用请求 READ_EXTERNAL_STORAGE ,并且用户授予了该权限。如果该应用针对的是 API 级别 24 或更低级别,系统还会同时授予 WRITE_EXTERNAL_STORAGE ,因为该权限也属于同一 STORAGE 权限组并且也在清单中注册过。如果该应用针对的是 Android 8.0,则系统此时仅会授予 READ_EXTERNAL_STORAGE ;不过,如果该应用后来又请求 WRITE_EXTERNAL_STORAGE ,则系统会立即授予该权限,而不会提示用户。

android 9
隐私权限变更。
为了增强用户隐私,Android 9 引入了若干行为变更,如限制后台应用访问设备传感器、限制通过 Wi-Fi 扫描检索到的信息,以及与通话、手机状态和 Wi-Fi 扫描相关的新权限规则和权限组。

android 10
隐私权变更。
外部存储访问权限范围限定为应用文件和媒体,在后台运行时访问设备位置信息需要权限,针对从后台启动 Activity 的限制等。

android 11
隐私权限变更。
更详细的版本变更请参考 https://developer.android.com/preview/privacy?hl=zh-cn

Ⅵ android 自定义的launcher在6.0后需要动态申请权限

6.0权限的基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。

group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA
permission:android.permission.CAMERA group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS

  • 以下是普通权限,只需要在AndroidManifest.xml中申请即可。

    android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
    android.permission.ACCESS_NETWORK_STATE
    android.permission.ACCESS_NOTIFICATION_POLICY
    android.permission.ACCESS_WIFI_STATE
    android.permission.ACCESS_WIMAX_STATE
    android.permission.BLUETOOTH
    android.permission.BLUETOOTH_ADMIN
    android.permission.BROADCAST_STICKY
    android.permission.CHANGE_NETWORK_STATE
    android.permission.CHANGE_WIFI_MULTICAST_STATE
    android.permission.CHANGE_WIFI_STATE
    android.permission.CHANGE_WIMAX_STATE
    android.permission.DISABLE_KEYGUARD
    android.permission.EXPAND_STATUS_BAR
    android.permission.FLASHLIGHT
    android.permission.GET_ACCOUNTS
    android.permission.GET_PACKAGE_SIZE
    android.permission.INTERNET
    android.permission.KILL_BACKGROUND_PROCESSES
    android.permission.MODIFY_AUDIO_SETTINGS
    android.permission.NFC
    android.permission.READ_SYNC_SETTINGS
    android.permission.READ_SYNC_STATS
    android.permission.RECEIVE_BOOT_COMPLETED
    android.permission.REORDER_TASKS
    android.permission.REQUEST_INSTALL_PACKAGES
    android.permission.SET_TIME_ZONE
    android.permission.SET_WALLPAPER
    android.permission.SET_WALLPAPER_HINTS
    android.permission.SUBSCRIBED_FEEDS_READ
    android.permission.TRANSMIT_IR
    android.permission.USE_FINGERPRINT
    android.permission.VIBRATE
    android.permission.WAKE_LOCK
    android.permission.WRITE_SYNC_SETTINGS
    com.android.alarm.permission.SET_ALARM
    com.android.launcher.permission.INSTALL_SHORTCUT
    com.android.launcher.permission.UNINSTALL_SHORTCUT

Ⅶ Android权限目录

android:name="android.permission.INTERNET"————访问网络

android:name="android.permission.ACCESS_NETWORK_STATE"————获取网络状态

android:name="android.permission.ACCESS_WIFI_STATE"————获取WiFi状态

android:name="android.permission.WRITE_EXTRNAL_STORAGE"————写入外部储存

android:name="android.permission.READ_EXTRNAL_STORAGE"————读取外部储存

android:name="android.permission.WRITE_EXTRNAL_STORAGE"————写入外部储存

android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEM"

tools:ignore="ProtectedPermission"————挂载卸载文件系统

android:name="android.permission.READ_PHONE_STATE"————读取电话状态

android:name="android.permission.VIBRATE"————允许震动

android:name="android.permission.WAKE_LOCK"————允许后台运行

android:name="android.permission.READ_LOGS"

tools:ignore="ProtectedPermission"————读取系统文件

android:name="android.permission.CAMERA"————调用相机权限

android:name="android.permission.CALL_PHONE"————调用打电话权限

android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER"————指纹识别

android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"————

android:name="com.samsung.android.providers.context.permission.EXPAND_STATUS_BAR"————通知栏伸缩

android:name="android.permission.REQUEST_INSTALL_PACKGES"————允许请求未知来源权限

Ⅷ Android 权限管理之 <uses-permission> 标签

<uses-permission> 标签位于 Manifest.xml 文件里,现在的 IDE 会提示需要把 <uses-permission> 标签写于 <application> 之前。

语法:

Requests a permission that the application must be granted in order for it to operate correctly. Permissions are granted by the user when the application is installed, not while it's running.

为了应用操作的正确,需要请求相应的权限。权限在应用安装的时候,而不是运行的时候,需要得到用户的确认。

Android 权限管理之 <uses-permission> 标签

Ⅸ Android开发中怎么主动请求权限

自定义属于自己的permission 或属于开发者使用的同一个签名的permission。定义一个permission 就是在menifest文件中添加一个permission标签。

<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />

android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
android:label: 对权限的一个简短描述
android:name :权限的唯一标识,一般都是使用 报名加权限名
android:permissionGroup: 权限所属权限组的名称
android:protectionLevel: 权限的等级,
normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户
dangerous 权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户
signature 权限表明的操作只针对使用同一个证书签名的app开放
signatureOrSystem 与signature类似,只是增加了rom中自带的app的声明

android:name 属性是必须的,其他的可选,未写的系统会指定默认值

1、权限的声明(APP1)

<permission android:name="com.xxx.permission" />

<receiver

android:name="com.example.demo1"

android:permission="com.xxx.permission" >

<intent-filter>

<action android:name="com.test.action" />

</intent-filter>

</receiver>

<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:permission="com.xxx.permission" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

2、权限的使用(APP2)
<uses-permission android:name="com.xxx.permission" />

Ⅹ android可以为本工程中的一个服务自定义一个permission属性么

service所在的app不需要uses-permission吧。其他要用到改服务的才需要uses-permission。而且你的service也没有设置exported=true,其他的应用也用不到。

热点内容
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:784
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662