Android Permission 机制

简介: AndroidManifest.xml里面的sharedUserID能够让不同的apk运行在同一个进程里,分享里面的数据,比如Contacts等,当然这个sharedUserID可以设置成“android.uid.system”就可以运行在系统进程中,有权修改系统数据。
AndroidManifest.xml里面的sharedUserID能够让不同的apk运行在同一个进程里,分享里面的数据,比如Contacts等,当然这个sharedUserID可以设置成“android.uid.system”就可以运行在系统进程中,有权修改系统数据。

但仅仅有着一个sharedUserID并不能够保证你的apk一定能运行成功,怎么办?签名啊。如果你有Android的源码就比较方便了,直接把Android.mk里面的LOCAL_CERTIFICATE 赋值为platform就行了。然后mm编辑,就能安装了。因为在安装的时候,PackageManager会检查,如果sharedUserId是system的,它会看这个apk的签名是不是system.crt,如果不是,会报出permission deny的error。而把LOCAL_CERTIFICATE改成platform就等于给APK签名。

进而可以通过这个问题研究一下整个Android permission的机制。系统的安全机制通过给每个用户分配单独的uid和gid来实现,Android系统中pid代表进程ID,这个是有系统在程序运行时分配的,这一点可以防止地址空间的数据共享,增强内存空间的安全性。对于外部则用到了uid进行封锁。

系统会给于用户进程单独的uid,当然系统也是要运行进程的,比如System,Radio,蓝牙,IO设备。系统中的init.rc文件会详细定义这些文件的权限。Android中对uid的定义是Root最高,其次是system,最低的是app。这是基于Linux系统的结果。

那么在APP里,要对一些进程进行访问,或者接受Broadcast,或者启动Activity、Service都是需要权限的,不能说你的app什么都能做,这也是需要在manifest file中设置的。

比如在startActivity时,如果你start自己apk里的activity,它们会在同一个application下,那么自然也就使用一个uid,start过程自然没有什么问题。如果你需要start别人写的Activity或者service,都需要用到同一个shareUserId才行,因为在ActivityManagerService要启动activity的之前,会首先检查uid,用checkPermission方法,透过binder获得pid和uid,检查你activity的binder的权限,如果你有权限则已,没权限的话就会抛出security exception。至于broadcast,检查则更为严格,会双向的检查发出者和接受者的权限.
目录
相关文章
|
1月前
|
前端开发 编译器 Android开发
构建高效Android应用:探究Kotlin协程的异步处理机制
【4月更文挑战第2天】在现代移动应用开发中,提供流畅且响应迅速的用户体验是至关重要的。随着Android平台的发展,Kotlin语言凭借其简洁性和功能性编程的特点成为了主流选择之一。特别地,Kotlin协程作为一种新型的轻量级线程管理机制,为开发者提供了强大的异步处理能力,从而显著提升了应用程序的性能和响应速度。本文将深入探讨Kotlin协程在Android中的应用,分析其原理、实现以及如何通过协程优化应用性能。
|
1月前
|
存储 Java Android开发
Android系统升级的机制概要
Android系统升级的机制概要
68 0
|
1月前
|
Android开发
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
39 3
|
18天前
|
安全 算法 数据安全/隐私保护
探索iOS与Android的隐私保护机制
【6月更文挑战第5天】在数字时代,隐私保护已成为用户最关心的问题之一。iOS和Android作为两大主流操作系统,各自发展出了独特的隐私保护技术。本文将深入探讨这两个平台在隐私保护方面的策略、技术和挑战。
20 3
|
21天前
|
Android开发
38. 【Android教程】Handler 消息传递机制
38. 【Android教程】Handler 消息传递机制
13 2
|
21天前
|
XML Android开发 数据格式
37. 【Android教程】基于监听的事件处理机制
37. 【Android教程】基于监听的事件处理机制
21 2
|
1月前
|
定位技术 Android开发
Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission
Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission
19 1
|
20天前
|
Android开发 虚拟化 异构计算
一文搞定Android VSync机制来龙去脉
一文搞定Android VSync机制来龙去脉
24 0
|
1月前
|
Android开发
Android Loader机制
Android Loader机制
31 1
|
1月前
|
存储 API Android开发
Android 11 中的存储机制更新,面试心得体会
Android 11 中的存储机制更新,面试心得体会