4、目标Activity的属性Android:exported=”true”

如果组件包含有intent-filter则 exported默认值为true;

没有intent-filter则exported默认值为false。

当exported

为 true时可以被外部其他App所调用

当exported

为 false时可以被外部其他App所调用

5、目标Activity具有相应的IntentFilter,存在Action动作或其他过滤器并且没有设置exported=false

6、启动者的Pid是一个System Server的Pid

7、启动者的Uid是一个System

Uid(Android规定android.system.uid=1000,具有该Uid的application,我们称之为获得Root权限)

如果上述调节,满足一条,一般即可(与其他几条不发生强制设置冲突),否则,将会得到Permission

Denial的Exception而导致Force Close。

现在,我来解释一下Uid机制

众所周知,Pid是进程ID,Uid是用户ID,只是Android和计算机不一样,计算机每个用户都具有一个Uid,哪个用户start的程序,这个程序的Uid就是那个那个用户,而Android中每个程序都有一个Uid,默认情况下,Android会给每个程序分配一个普通级别互不相同的Uid,如果用互相调用,只能是Uid相同才行,这就使得共享数据具有了一定安全性,每个软件之间是不能随意获得数据的。而同一个application只有一个Uid,所以application下的Activity之间不存在访问权限的问题。

如果你需要做一个application,将某些服务service,provider或者activity等的数据,共享出来怎么办,三个办法。

1、完全暴露,这就是android:exported=”true”的作用,而一旦设置了intentFilter之后,exported就默认被设置为true了,除非再强制设为false。当然,对那些没有intentFilter的程序体,它的exported属性默认仍然是false,也就不能共享出去。

2、权限提示暴露,这就是为什么经常要设置usePermission的原因,如果人家设置了android:permission=”xxx.xxx.xx”那么,你就必须在你的application的Manufest中usepermission

xxx.xxx.xx才能访问人家的东西。

3、私有暴露,假如说一个公司做了两个产品,只想这两个产品之间可互相调用,那么这个时候就必须使用shareUserID将两个软件的Uid强制设置为一样的。这种情况下必须使用具有该公司签名的签名文档才能,如果使用一个系统自带软件的ShareUID,例如Contact,那么无须第三方签名。

这种方式保护了第三方软件公司的利益于数据安全。

当然如果一个activity是又system

process跑出来的,那么它就可以横行霸道,任意权限,只是你无法开发一个第三方application具有系统的Pid(系统Pid不固定),但是你完全可以开发一个具有系统Uid的程序,对系统中的所有程序任意访问,只需再Manufest中声明shareUserId为android.system.uid即可,生成的文件也必须经过高权限签名才行,一般不具备这种审核条件的application,google不会提供给你这样的签名文件。当然你是在编译自己的系统的话,想把它作成系统软件程序,只需在Android.mk中声明Certificate:platform则可以了,既采用系统签名。这个系统Uid的获得过程,我们把它叫做获得Root权限的过程。所以很多第三方系统管理软件就是有Root权限的软件,因为他需要对系统有任意访问的权限。那么它的Root签名则需要和编译的系统一致,例如官方的系统得用官方的签名文件,CM的系统就得用CM的签名文件。

android默认exported_AndroidManifest.xml文件中exported属性解析相关推荐

  1. android 自定义view xml ,Android实现在xml文件中引用自定义View的方法分析

    本文实例讲述了Android实现在xml文件中引用自定义View的方法.分享给大家供大家参考,具体如下: 在xml中引用自定义view 方法一: android:layout_width=" ...

  2. Android Studio在xml文件中编写代码时,关键词没有代码提示补全

    问题描述: Android Studio在xml文件中编写代码时,无法自动补全 例如在TextView中输入textSize,没有出现任何代码提示 解决方式: File->Project Str ...

  3. 【Android】安卓布局文件中xmlns属性

    定义及使用 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间 自定义View的时候有时候会在布局文件中使用到 命名规则如下: xmlns:前缀=htt ...

  4. Java:使用DOM4j来实现读写XML文件中的属性和元素

    DOM4可以读取和添加XML文件的属性或者元素 读取属性: public static void ReadAttributes() throws DocumentException {File fil ...

  5. Android开发获得xml文件中定义的数组资源

    定义数组资源的xml文件位于/res/values目录下,文件名为arrays.xml 数组共有三种类型:<array></array>.<string-array> ...

  6. android编程strings,Android开发: strings.xml文件中的错误

    编辑strings.xml的时候 在行http://code.dd.com/rr?q=%rr.55 提示下面的错误 Multiple annotations found at this line: - ...

  7. Android XML文件中设置字体

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用an ...

  8. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...

  9. Android Studio xml文件中的布局预览视图

    操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...

最新文章

  1. div中的图像在图像下方有多余的空间
  2. iphone降级_今年 iPhone 将支持手写笔?乔老爷哭了!
  3. 记录spark-yarn模式下提交自己写的java程序
  4. js赋值与逻辑运算的疑问
  5. 创科视觉软件说明书_【拓斯达 | GGII】20192023年中国机器视觉行业调研
  6. quartus调用74系列的芯片
  7. mysql timestamp 值_mysql中TIMESTAMP设置默认值的灵活运用
  8. OpenSSH 搭建 SFTP 服务器
  9. 优化三维空间定位法及C语言快捷实现
  10. 软件工程导论学习笔记
  11. BZOJ2794: [Poi2012]Cloakroom【偏序+背包】
  12. 时区相关-这一篇全了解
  13. 如何把pdf翻译成中文?
  14. 2016 计蒜之道 初赛 第一场 青云的服务器密钥
  15. AI大牛沈春华全职加入浙大!全球顶级学者专注CV,一年被引次数超9k+
  16. Linux、window服务器下创建共享文件夹(方便于局域网内进行文件共享)
  17. oracle latch锁,DTCC:Oracle栓锁竞争与Latch优化实践
  18. excel中F4的妙用
  19. 有趣的HTML实例(一) 倒计时
  20. 网上引流方式有哪些?有哪些引流方式能转化?

热门文章

  1. 批量导入邮箱(收取邮件/群发邮件)
  2. OLED有机材料市场现状及未来发展趋势分析
  3. 了解步进、有无刷和伺服电机的选择与应用
  4. 用python写个华丽的登录页面
  5. QQWRY应用:ASP.NET捕获客户机IP和物理地址
  6. 第一章 青橙电商系统搭建
  7. angular div 滚动条事件_angular怎么控制滚动条
  8. 广州楼市:这类房子今后更吃香,看懂的人已经悄悄入手!
  9. CES现场直击 AI让你现场获得虚拟双胞胎 1
  10. 服装行业如何做企业微信社群运营案例(私域运营案例拆解)