android 防止程序之间互相访问(exported属性)

程序A如果不想被其他的程序调用自己的activity,service,或者是receiver的时候,只要在AndroidManifest.xml里面添加exported属性,便能使其他的程序不能调用自己。

AndroidManifest.xml

<activity

...

android:exported="false" />

<service

...

android:exported="false" />

<receiver

....

android:exported="false" />

虽然说加了这个属性,能使其他的程序不能调用。

但是,需要注意的是,如果两个程序的userid是一样的话,exported=”false“就没有用了。

比如,两个程序都定义了android:sharedUserId=”android.uid.system",这时候两个程序的userid是一样的,

两个程序之间还是可以互相访问的。

时间: 2024-08-27 04:39:17

android 防止程序之间互相访问(exported属性)的相关文章

Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过 Content Provider组件来实现.那么,Content Provider组件又是如何突破应用程序边界权限控制来实现在不同的应用程序之间共享数据的呢?在前面的文章中,我们已经简要介绍过它是通过 Binder进程间通信机制以

单例访问Android应用程序对象

1.单例模式: 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 2.单例模式优势: 由于单例模式在内存中只有一个实例,减少了内存开销 单例模式可以避免对资源的多重占用. 单例模式可以在系统设置全局的访问点,优化和共享资源访问. 2.问题:需要从android应用程序中去访问全局数据 解决

Android应用程序与SurfaceFlinger服务的关系概述和学习计划 .

转自:http://blog.csdn.net/luoshengyang/article/details/7846923 SurfaceFlinger服务:负责绘制Android应用程序的UI, SurfaceFlinger服务运行在Android系统的System进程中,它负责管理Android系统的帧缓冲区(Frame Buffer).Android系统的帧缓冲区的相关知识, Android应用程序为了能够将自己的UI绘制在系统的帧缓冲区上,它们就必须要与SurfaceFlinger服务进行

Android应用程序与SurfaceFlinger服务的关系概述和学习计划【转】

转自 https://blog.csdn.net/luoshengyang/article/details/7846923 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件容易的事.既然不能从正面分析,我们就想办法从侧面分析.说到底,无论SurfaceFlinger服务有多复杂,它都是为Android应用程序服务的,因此,我们就从Android应用程序与SurfaceFlinger服务的关系入手,来概述和制定SurfaceFli

Android应用程序资源管理器(Asset Manager)的创建过程分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8791064 在前面一篇文章中,我们分析了Android应用程序资源的编译和打包过程,最终得到的应用程序资源就与应用程序代码一起打包在一个APK文件中. Android应用程序在运行的过程中,是通过一个称为AssetManager的资源管理器来读取打包在APK文件里面的资源文件的.在本文中,我们就 将详细分析Android应用程序资源管理器的创建

android应用程序访问linux驱动第一步:实现并测试Linux驱动

一直都想亲自做一次使用android应用程序访问Linux内核驱动的尝试,但总是没能做到.最近抽出时间,下决心重新尝试一次.尝试的开始当然是先写一个Linux内核驱动了. 我希望写一个简单测驱动程序,实现写一个字符串进去,然后再把它读出来的功能.驱动中会创建dev/hello设备节点和/sys/class/hello/hello/val 设备节点,没有实现proc/下的对应的设备节点./sys/class/hello/hello/val 主要用于快速测试,而dev/hello则主要用于供上层应用

Android应用程序、应用程序访问硬件的流程

对于分层的系统,刚开始认识时,从宏观的框架层面了解应用的构建过程,有助于形成自己对新系统的清晰概念. 1.Android应用程序构建框架: 这里就涉及活动.布局.注册之间的关系.搞清了这三者,会对真个应用的实现流程了然于心. 2.应用程序访问底层硬件的程序构成: 这里就涉及应用.Android Frameworks.JNI.硬件抽象层HAL.驱动.硬件(OS)之间的关系,了解它们间的关系,对于整个安卓系统就有了整体的清晰认识. 版权声明:本文为博主原创文章,未经博主允许不得转载.

Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析 .

引自:http://blog.csdn.net/luoshengyang/article/details/7867340 在前面一篇文章中,我们分析了Android应用程序与SurfaceFlinger服务的连接过程.Android应用程序成功连接上SurfaceFlinger服务之后,还需要一块匿名共享内存来和SurfaceFlinger服务共享它的UI元数据, 以便使得SurfaceFlinger服务可以正确地为它创建以及渲染Surface.在本文中,我们将详细地分析这块用来保存UI元数据的

Android Content Provider在应用程序之间共享数据的原理分析

本文参考Android应用程序组件Content Provider在应用程序之间共享数据的原理分析http://blog.csdn.net/luoshengyang/article/details/6967204和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 总体类图: 1.MainActivity进程向AriticlesProvider进程发送IContentProvider.QUERY_TRANSACTION 如图:第一步 ~/Android/framework