Android UID and PID
Android UID and PID
我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互 (startActivityForResult)。但有没有想过可能会出现的permission问题呢?如果你遇到了permission denial的Exception,那么你需要读读这篇文章啦。
我们在同一个application内部,可以随意的startActivity from Activity A to Activity
B,而官方的文档中说startActivity可能会报NotFoundException,表示被start的Activity不存在。因此,我们很
容易忽略另一个可能的Exception,Permission Denial。
当我们在不同的application中,如application A中的Activity去start一个application
B中的Activity,也许你什么Exception都不会得到,也可能会直接Force Close掉。因为再Start
Activity时,代码是有去检验permission的。
如下情况,可以成功startActivity而不会得到permission denial
1、同一个application下
2、Android:exported=”true”
5、目标Activity具有相应的IntentFilter,存在Action动作或其他过滤器并且没有设置exported=false
6、启动者的Pid
7、启动者的Uid(android.system.Uid的application,我们称之为获得Root权限)
如果上述调节,满足一条,一般即可(与其他几条不发生强制设置冲突),否则,将会得到Permission Denial的Exception而导致Force Close。
现在,我来解释一下Pid是进程ID,AndroidUid,哪个用户start的程序,这个程序的Android中每个程序都有一个Android会给每个程序分配一个普通级别互不相同的 Uid相同才行,这就使得共享数据具有了一定安全性,每个软件之间是不能随意获得数据的。而同一个application 只有一个android:exported=”true”
的作用,而一旦设置了intentFilter之后,exported就默认被设置为true了,除非再强制设为false。当然,对那些没有
intentFilter的程序体,它的exported属性默认仍然是false,也就不能共享出去。
2、权限提示暴露,这就是为什么经常要设置usePermission的原因,如果人家设置了 Uid强制设置为一样的。这种情况下必须使用具有该公司签名的签名文档才能,如果使用一个系统自带软件的ShareUID,例如Contact,那么无须第三方签名。
这种方式保护了第三方软件公司的利益于数据安全。
当然如果一个activity是又system process跑出来的,那么它就可以横行霸道,任意权限,只是你无法开发一个第三方application具有系统的Pid不固定),但是你完全可以开发一个具有系统android.system.Android.mk中声明 Certificate:platform则可以了,既采用系统签名。这个系统和编译的系统一致,例如官方的系统得用官方的签名文件,CM的系统就得用CM的签名文件。
Android UID and PID的更多相关文章
- "android.uid.systemandroid.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView
在android源码中编译app通过,运行时出现错误: "android.uid.systemandroid.view.InflateException: Binary XML file l ...
- ANDROID 中UID与PID的作用与区别
PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在a ...
- Android安装应用失败UID 和 PID
参考:http://blog.sina.com.cn/s/blog_62ef2f140101j6q2.html 安装任意第三方的一个apk,恢复出厂设置,再次安装相同的apk,提示安装失败,通过打印L ...
- Android手机中UID、PID作用及区别
PID 指进程ID. PID是进程的身份标识,程序一旦运行,就会给应用分配一个独一无二的PID(ps:一个应用可能包含多个进程,每个进程有唯一的一个PID) 进程终止后PID会被系统收回,再次打开应用 ...
- Android中UID和PID的作用和区别
PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在a ...
- Android UID 机制
UID一般理解为User Identifier,在linux中就是用户的ID,表明是哪个用户运行了这个程序.它们主要用于权限的管理. 而在Android 中又有所不同,因为Android为单用户系统, ...
- ADB命令获取Android UID
有三种方案: 1. adb shell dumpsys package <packagename> | grep userId= 先通过 "adb shell dumpsys p ...
- UID、PID、PPID是什么?
UID是用户ID,PID是进程ID,PPID是父进程ID. UID UID 用户身份证明(User Identification)的缩写.UID用户在注册后,系统会自动的给你一个UID的数值.意思就是 ...
- Android中通过pid获取app包名
String callerPackage = getAppNameByPID(getContext(), Binder.getCallingPid()); private String getAppN ...
随机推荐
- Linux启动应用(比如jmeter)报An error occurred: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
Linux启动应用(比如jmeter)报An error occurred: Can't connect to X11 window server using ':0.0' as the value ...
- windows10下安装face_recongnition
第一步:安装vistual studio,我安装的是最新版本2017. 另外,并且因为要学习C# ,选了所需要的东西.暂不知这一步是否必需. 第二步:接下来安装boost 通过此链接:https:// ...
- C#检测两个文件内容是否相同
不知道为什么对Excel 2010 xlsx后缀的文件没有效果,求解! 对其他文件有效,如.txt,.csv using System; using System.Security.Cryptogra ...
- 第一个Python程序(Day3)
一 Python 解释器执行Python程序的过程 eg:python3 C:\ test.py 1.启动python解释器 (内存中) 2.将C:\ test.py中的内容从硬盘读入内存 ...
- 让Jackson JSON生成的数据包含的中文以unicode方式编码
本文出处:http://blog.csdn.net/chaijunkun/article/details/8257209,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建 ...
- JavaScript判断对象 是什么类型的.
// 这种方法不起作用 if (x == undefined) { // 作某些操作 } // 这个方法同样不起作用- if (typeof(x) == undefined) { // 作某些 ...
- powerdesign初级入门教程
首先我们需要创建一个测试数据库,为了简单,我们在这个数据库中只创建一个Student表和一个Major表.其表结构和关系如下所示. 看看怎样用PowerDesigner快速的创建出这个数据库吧. 1. ...
- No module named bz2
yum install bzip* python2.6 import bz2 python2.7 import bz2 error 解决:sudo cp /usr/lib64/python2.6/li ...
- 通过Apache配置web服务器反向代理
- 第一步: 到安装好的apache文件目录conf文件下,找到httpd.conf文件 找到如下配置,去掉#可以启动HTTP反向代理功能 : LoadModule proxy_module modu ...
- Linux下挂载windows的共享文件夹
环境说明: 由于领导要求:现需要将某Linux服务器下的一个文件移动到某windows服务器下(服务器均在机房托管,要远程操作) 由于操作为一次性,则决定在windows下建立一个共享文件夹,linu ...