当前位置:首页 » 安卓系统 » android权限框架

android权限框架

发布时间: 2022-10-25 08:29:44

❶ 如何管理安卓权限:Xposed框架+X隐私模块

supersu用来管理root权限,我的理解仅此而已,请大神指点指点。xposed框架是安卓手机之魂,无XP,不安卓

❷ android 6.0动态权限写在第一个activity中就行了吗

不是的,要在申请权限的过程中。

❸ Android有哪些"权限"

Android是在linux内核上建立一个硬件抽象层(Android HAL),通过Dalvik以及各种库来执行android应用的。在手机启动时,首先需要由Bootloader(HTC手机上称作Hboot)引导Linux及手机上各个硬件设备的驱动程序,之后才启动Android系统。所以其实我们会涉及到四种不同涵义的权限:
Android权限(Permission)
这指Android中的一系列"Android.Permission.*"对象,是本文的中心内容。
Google在Android框架内把各种对象(包括设备上的各类数据,传感器,拨打电话,发送信息,控制别的应用程序等)的访问权限进行了详细的划分,列出了约一百条"Android.Permission"。应用程序在运行前必须向Android系统声明它将会用到的权限,否则Android将会拒绝该应用程序访问通过该"Permission"许可的内容。
比方说,搜狗输入法提供了一个智能通讯录的功能,用户可以在输入联系人拼音的前几个字符,或首字母,输入法就能自动呈现相关联系人的名字。为了实现这个功能,输入法必须声明它需要读取手机中联系人的能力,也就是在相关代码中加上声明"android.permission.READ_CONTACTS"对象。
图5 搜狗输入法的智能联系人功能
原生Android只提供了对"一刀切"式的管理,要么同意使用,否则就根本就不安装应用程序。当用户遇到希望使用程序的同时,又想禁止部分Permission的场合,他就无路可走。
于是,不少开发者就捣鼓出了"第三条道路";可惜的是,没有一种方法能同时做到既不需要将手机固件Root,又完全不涉及对原始应用程序进行反向工程的方法。
RootRoot指获得Android所在的Linux系统的Root(根)权限,有了根权限,你才能对Linux做出任意的修改。iOS中的越狱(Jailbreak) 相当于获得iOS系统的Root权限(iOS是一种类Unix系统,和Linux都使用Root的概念)。在已Root的设备中,通常都是使用一个叫"Superuser"(简称SU)的应用程序来向许可的程序授以Root权限。
Bootloader的解锁(Unlock)
利用数字签名,Bootloader可以限定只有正确签名的系统可以被引导。在修改固件以获得Root以前,解锁Bootloader通常是必须的。安装第三方修改、编译的固件也需要解锁Bootloader。
基带(Radio)解锁
在Android系统中,基带是上层软件与手机中无线设备(手机网络,Wi-Fi,蓝牙等)的驱动程序之间的中介。国外的网络运营商很喜欢锁定基带,从而保证用户只能使用运营商自己指定的sim卡。在我国,锁定基带是非法的,手机制造商、网络运营商也不可以通过锁定基带的方法对待违约客户。iOS的"解锁"就是解锁iOS中的基带软件。
鱼和熊掌不可兼得,Android的世界有很多自由,坏人也能自由地做坏事。它的生态系统很强调自主:用户可以自主地减小风险,仅使用官方市场的应用程序,也可以自主地解除安全限制,从而获得更多自由。因此,在遇到坏事的时候,用户也不得不自主一下:
1, 抵制不道德,乃至非法行为
几乎所有的Android安全软件都能对来电、信息进行控制,以减少骚扰。
另一方面,很多应用都会要求它们实际功能以外的权限,表现在非(主动)告知地搜集设备序列号,位置信息,诱使用户默认地上传联系人列表等方面。
更坏一点的应用程序,则会踏入犯罪的范畴,比如能偷偷发出扣费信息,或是作为黑客的偷窥工具。
2, 减少恶意软件的损害
恶意软件即便潜伏成功,也难以获得权限,从而减少损失。
3, 用户有权自主地在抑制应用程序的部分权限时,继续使用该应用程序,而只承担由于自行设置不当而带来的后果。
用户拥有设备的所有权,因此有权自主控制设备上的内容、传感器等对象的访问;同时有权(不)运行,(不)编译设备上的应用程序。
大多数应用程序在运行时,并未达成主动告知的义务,是失误;然而即使主动告知,用户还是可以不理会。
通过Android官方市场,"打包安装器"安装应用程序时,所显示的"权限"仅是在安装包内AndroidManifest.xml声明的值,而非应用程序实际上会调用的内容。该值仅用来表明Android系统能向应用授予的最大可能的权限。即便一个"Hello World"式的应用程序,也可以在AndroidManifest.xml中声明所有可能的Android Permission。
这就是说,在AndroidManifest.xml中声明的值与应用程序实际调用的权限有关联,但不等同,且这种提示是由Android系统负责实施的强制行为。
正确的理解是:"应用程序(被迫地)让Android系统告知用户,它在AndroidManifest.xml中所声明的事项。"
这意味着应用程序在使用重要权限前,依然需要自行、主动地通知用户相关事宜。

❹ Android6.0的sd卡权限怎么搞

安卓6.0加入了更严格得权限验证,SD卡读写权限是这样得
1. 在AndroidManifest.xml添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 现在大应用一般都汇集成进去权限框架,这样在你读写SD卡得时候判断有没有权限,有的话执行,没有的话弹出添加权限对话框点击确定添加权限。
3.现在权限框架比较多有EasyPermission,PermissionGen 和 MPermissions。
4.EasyPermission修改了一个框架library,可直接使用

❺ 如何管理android手机中app的权限

1、(以魅族手机为例)打开手机设置选项。

❻ 如何限制安卓app权限

控制权限当然首推Xposed框架中的XPrivacy

根据我自己归纳,控制权限的方式大致分为以下几种:

0. AppOps. 4.3以上系统的原生权限控制。但是目前官方的Android系统还未开放这项功能,需要自己找工具开启。(应该是一个Xposed下的工具,所以不如直接用XPrivacy)即使开启后能控制的范围也比较有限。

1. 第三方应用。也就是LBE、360这一类XX手机助手,它们的使用门槛最低,但是缺点在于提供的选项比较单一、效率较低在旧机子上明显卡顿、而且这些软件发行者本身的可信任程度值得商榷。

2. 强行吊销应用权限。包括修改apk文件和CM系统自带的权限管理。效率最高,但是有些应用不吃这套,修改后直接闪退,估计是在启动时会先检查权限的完整性(鄙视之)。

3. 也就是这里推荐的 XPrivacy. 基于Xposed框架,直接从虚拟机层面进行操作,具体的原理我不太清楚,但可以肯定效率高于第一类应用。更大的好处在于极为丰富具体的选项,精确控制每一项权限,还可以用伪造数据等方法确保应用稳定运行。最重要的是完全开源,安全性更高。但有一定的使用门槛,建议至少对Android有基本的了解再使用。

❼ 安卓6.0的SD卡权限怎么破

没有ROOT的情况下,参照MIUI系统,在设置里面找到“全部应用”,找到“文档”(或者相近的名词),点击打开后标注为“启用”或者“使用”,重启。那么可以使用SD卡的app都可以读写SD卡,如某某导航的离线据包可以放在SD卡,拇指玩、当乐下载的APK都可以放在SD卡,小鸡、啪啪模拟器下载的ROM都可以放在SD卡等等。如果APP本身定制只能放在内置存储不能转移到SD卡,那就没有用了。

❽ Android的权限都有哪些

(一)linux文件系统上的权限
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。
比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。
而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限
(二)Android的权限规则
(1)Android中的apk必须签名
这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。
默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限
(2)基于UserID的进程级别的安全机制
大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。
Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43
不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。
Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。
在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序,
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。
(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,
显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默认apk生成的数据对外是不可见的
实现方法是:Android会为程序存储的数据分配该程序的UserID。
借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。
例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何对外开放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的显式权限声明
Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。
一般以下动作时都需要申请相应的权限:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。
在程序运行期间是不检测权限的。如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。
大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。
(5)权限继承/UserID继承
当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。
前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),
即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。
实际上,android是通过给子进程分配父进程的UserID实现这一机制的。
(三)常见权限不足问题分析
首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。
另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。
言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。
此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。
有时权限都加上了,但还是报权限不足,是什么情况呢?
Android系统有一些API及权限是需要apk具有一定的等级才能运行的。
比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限好像都是需要有system级的权限才行。
也就是说UserID是system.
(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。
比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。
系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录。

-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。
/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。
所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。

❾ Android 的权限管理是怎么实现的

Android 作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据 Android 的软件框图,其软件层次结构自下而上分为以下几个层次:
操作系统层(OS)
各种库(Libraries)和 Android 运行环境(RunTime)
应用程序框架(Application Framework)
应用程序(Application)
以下分别介绍 Andoid 各个层次的软件的重点及其相关技术:
(1)操作系统层(OS)
Android 使用 Linux2.6 作为操作系统,Linux2.6 是一种标准的技术,Linux 也是一个开放的操作系统。Android 对操作系统的使用包括核心和驱动程序两部分,Android 的 Linux 核心为标准的 Linux2.6 内核,Android 更多的是需要一些与移动设备相关的驱动程序。主要的驱动如下所示:
显示驱动(Display Driver):常用基于 Linux 的帧缓冲(Frame Buffer)驱动
Flash 内存驱动(Flash Memory Driver)
照相机驱动(Camera Driver):常用基于 Linux 的 v4l(Video for )驱动。
音频驱动(Audio Driver):常用基于 ALSA(Advanced Linux Sound Architecture,高级 Linux 声音体系)驱动
WiFi 驱动(Camera Driver):基于 IEEE 802.11 标准的驱动程序
键盘驱动(KeyBoard Driver)
蓝牙驱动(Bluetooth Driver)
Binder IPC 驱动:Andoid 一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。
Power Management(能源管理)
(2)各种库(Libraries)和 Android 运行环境(RunTime)
本层次对应一般嵌入式系统,相当于中间件层次。Android 的本层次分成两个部分一个是各种库,另一个是 Android 运行环境。本层的内容大多是使用 C++ 实现的。 在其中,各种库包括:
C 库:C 语言的标准库,这也是系统中一个最为底层的库,C 库是通过 Linux 的系统调用来实现。
多媒体框架(MediaFrameword):这部分内容是 Android 多媒体的核心部分,基于 PacketVideo(即 PV)的 OpenCORE,从功能上本库一共分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。
SGL:2D 图像引擎。
SSL:即 Secure Socket Layer 位于 TCP/IP 协议与各种应用层协议之间 , 为数据通讯提供安全支持。
OpenGL ES 1.0 :本部分提供了对 3D 的支持。
界面管理工具(Surface Management):本部分提供了对管理显示子系统等功能。
SQLite:一个通用的嵌入式数据库
WebKit:网络浏览器的核心
FreeType:位图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显着特点就是与移动设备的平台的应用密切相关。 Android 运行环境主要指的虚拟机技术—— Dalvik。Dalvik 虚拟机和一般 JAVA 虚拟机(Java VM)不同,它执行的不是 JAVA 标准的字节码(bytecode )而是 Dalvik 可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序即一个进程(Linux 的一个 Process)。 二者最大的区别在于 Java VM 是以基于栈的虚拟机(Stack-based),而 Dalvik 是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
(3)应用程序框架(Application Framework)
Android 的应用程序框架为应用程序层的开发者提供 APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以 JAVA 构建的,因此本层次提供的首先包含了 UI 程序中所需要的各种控件: 例如: Views ( 视图组件 ) 包括 lists( 列表 ), grids( 栅格 ), text boxes( 文本框 ), buttons( 按钮 ) 等,甚至一个嵌入式的 Web 浏览器。一个 Android 的应用程序可以利用应用程序框架中的以下几个部分: Activity (活动)、Broadcast Intent Receiver (广播意图接收者)、Service (服务)、Content Provider (内容提供者)。
(4)应用程序(Application)
Android 的应用程序主要是用户界面(User Interface),通常以 JAVA 程序编写,其中还可以包含各种资源文件(放置在 res 目录中)。JAVA 程序及相关资源经过编译后,将生成一个 APK 包。Android 本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browsers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的 API 实现自己的程序。

热点内容
快速喊话脚本 发布:2025-02-01 04:16:48 浏览:885
如何分辨普拉多的配置 发布:2025-02-01 04:11:45 浏览:680
linuxc文件删除 发布:2025-02-01 04:11:33 浏览:217
c语言稀疏矩阵转置矩阵 发布:2025-02-01 03:47:57 浏览:531
坦克世界挂机脚本有哪些 发布:2025-02-01 03:07:41 浏览:134
串口编程at 发布:2025-02-01 03:06:05 浏览:909
合资汽车配置有什么 发布:2025-02-01 02:56:07 浏览:79
wifi共享精灵源码 发布:2025-02-01 02:40:15 浏览:973
java软件怎么安装 发布:2025-02-01 02:40:09 浏览:549
河北税务局电子密码是什么 发布:2025-02-01 02:40:07 浏览:835