文章目录
#前言
第一次接触安卓权限,是从一个demo开始。有点类似于Hello Word,这次是从一个叫做
android.permission.CALL_PHONE
的权限,顾名思义打电话。那时候很懵懂,只知道添加上去程序就可以正常运行。不知其然,更不知其所以然。直至工作中遇到越来越多的场景,因此有必要对安卓权限深入研究一番。
##权限详解
从本质上来讲,权限同安卓四大组件息息相关。打电话(Activity)、发短信(Service)、监听手机重启(BroadcastReceiver)、获取联系人(ContentProvider)等等都需要申请权限。这是因为系统的组件功能开放给开发者使用。在实现这些组件的功能时,需要将
android:exported="true"
属性添加到组件之中。事实上,当给组件添加
intent-filter
标签时,该组件
android:exported
属性值已经默认是true。
我们接触到的第一个intent-filter
相信大家都不陌生
<activity android:name=".activity.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
当我们在手机桌面上点击应用logo,就会启动这个Activity。这个intent-filter
就是把我们的MainActivity开放给桌面管理应用。
有兴趣的可以尝试如下代码
<activity android:name=".activity.MainActivity"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.MainActivity"
android:permission="your permission">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
前者是显示关闭exp