Android安全机制--四大组件安全

组件有Public和Private的概念,是否能被其他方调用。通过android:exported字段来确定,android:exported="true"表示能,反之不行。

默认情况下,组件在AndroidMainfest声明中没有 interfliter  那么exported为false,有了interfliter为true.当然我们可以直接输入android:exported来自己控制。以下就设置为false

[html] view
plain
copyprint?

  1. <activity
  2. android:name=".LoginActivity"
  3. android:label="@string/app_name"
  4. android:screenOrientation="portrait"
  5. android:exported="false">

我们可以通过自定义permission来限制四大组件的安全

Activity中

在service

在contentprovider中分为写与读的两个权限

在broastreceiver中发送时

接收时

怎么自定义?在androidmainfest中

[html] view
plain
copyprint?

  1. <permission android:description="test"
  2. android:label="test"
  3. android:name="com.test.custempermission"
  4. android:protectionLevel="normal">
  5. </permission>

下面通过指定一个BroadcastReceiver的权限来实验

首先创建了两个app,app A ,app B ;

app A中注册了一个BroadcastReceiver ,app B 发送消息

app A的menifest文件:

Xml代码  

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="com.example.testbutton"
  3. android:versionCode="1"
  4. android:versionName="1.0" >
  5. <uses-sdk
  6. android:minSdkVersion="7"
  7. android:targetSdkVersion="15" />
  8. <!-- 声明权限 -->
  9. <permission android:name="com.example.testbutton.RECEIVE" />
  10. <application
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name=".MainActivity"
  16. launcheMode="singleTask"
  17. android:configChanges="locale|orientation|keyboardHidden"
  18. android:screenOrientation="portrait"
  19. android:theme="@style/android:style/Theme.NoTitleBar.Fullscreen" >
  20. <intent-filter>
  21. <action android:name="android.intent.action.MAIN" />
  22. <category android:name="android.intent.category.LAUNCHER" />
  23. </intent-filter>
  24. </activity>
  25. <!-- 注册Broadcast Receiver,并指定了给当前Receiver发送消息方需要的权限 -->
  26. <receiver
  27. android:name="com.example.testbutton.TestButtonReceiver"
  28. android:permission="com.example.testbutton.RECEIVE" >
  29. <intent-filter>
  30. <action android:name="com.test.action" />
  31. </intent-filter>
  32. </receiver>
  33. </application>
  34. </manifest>

app B 的menifest 文件内容

Xml代码  

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="com.example.testsender"
  3. android:versionCode="1"
  4. android:versionName="1.0" >
  5. <uses-sdk
  6. android:minSdkVersion="7"
  7. android:targetSdkVersion="15" />
  8. <!-- 声明使用指定的权限 -->
  9. <uses-permission android:name="com.example.testbutton.RECEIVE" />
  10. <application
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name=".MainActivity"
  16. android:label="@string/title_activity_main" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>

这样app B 给app A 发送消息,A就可以收到了,若未在app B的menifest文件中声明使用相应的权限,app B发送的消息,A是收不到的。

时间: 2024-11-07 19:23:09

Android安全机制--四大组件安全的相关文章

关于Android中的四大组件(AIDL Service的使用)

跨进程调用Service(AIDL Service) Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 在前一篇文章(关于Android中的四大组件(Service的开启与关闭))中介绍了开发人员如何定制自己的服务,但这些 服务并不能被其它的应用程序访问,为了使其它的应用程序也可以访问本应用程序提供的服务,Android系统采用了 远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其它的基于RPC的解决方案一样,An

Android基础之四大组件---Activity

Android基础之四大组件-Activity 1.什么是Activity 2.Activity生命周期 3.Activity生命周期演示 4.Activity之间的通信 5.Activity之加载模式 6.Activity的栈式管理 1.什么是Activity? Activity是用户接口程序,它是Android应用程序的基本功能单元,它的主要功能是提供界面.Activity是Android的核心类,该类的全名是android.app.Activity.Activity相当于C/S程序中的窗体

Android笔记(六十)Android总结:四大组件——BroadcastReceiver篇

什么是BroadcastReceiver BroadcastReceiver是Android体系的四大组件之一,本质上是一种全局的监听器,用于监听系统全局的广播消息,正式因为其本质为全局监听,因此可以非常方便的实现系统中不同组件之间的通信.也方便我们自己的app针对系统开机.电量低等广播做出相应反映.同时我们也可以自己发送广播,来实现不同组件之间的通信 系统接收短信广播,然后弹出Toast: package cn.lixyz.broadcastreceiver; import android.a

王立平--android中的四大组件

Android中称为四大组件的为别为:Activity/Service/BroadCast Recevicer/Content  provider Activity:activity是用户和应用程序交互的窗口,一个activity相当于我们实际中的一个网页,当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回到以前打开过的屏幕. activity的生命周期:即"产生.运行.销毁",但是这其中会调用许多方法onCreate(创建) .onSta

android 意图和四大组件

意图 Intent                                            一.显式意图        直接指定要实现的类:            Intent intent=new Intent(MainActivity.this,xxx.class);            this.startActivity(intent);            二.隐式意图        1:xml配置:在意图所指向的类的配置中添加属性<intent-filter>&l

Android Service即四大组件总结

原文转载自:http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Service 服务: 一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序. 比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器.在一个媒体播放器的应用中,应该会有多个 activity,让使用者可以选择歌曲并播放歌曲.然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕

Android笔记(五十八)Android总结:四大组件——Activity篇

什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentView()方法来载入布局文件.并且通过用户对布局文件中的组件所发出的事件来做出相应的反映. Activity的四种状态 1)激活状态,此时activity运行在屏幕前台 2)暂停状态,此时activity失去焦点,但是用户仍然可以看到(例如这个activity上遮盖了一个透明的或者非全屏的activ

关于Android中的四大组件(Activity)

一.Activity简述 Activity是Android应用中负责与用户交互的组件.在应用中创建自己的Activity需要继承Activity或者继承Activity的 子类. public class TestActivity extends Activity { } 二.Activity的使用 从图1.1可以看出Activity间接继承了ContextThemeWrapper.ContextWrapper.Context.Object这些基类,因此 Activity可以直接调用它们的方法.

android 概述 及四大组件

android studio中,gen很bin文件夹合并为built文件夹