android:exported 属性

本文深入解析AndroidManifest.xml中android:exported属性的作用,阐述其如何决定服务的可访问性,并通过实例展示如何允许其他应用访问特定服务。文章详细解释了设置此属性为true或false的后果,以及如何通过配置实现不同应用间的相互调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android:exported
这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。
这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。


在项目中,如果想使用systemUI.apk中的screenshot.TakeScreenshotService 进行截屏,那么需要把systemUI中的AndroidManifest.xml 的<service android:name=".screenshot.TakeScreenshotService">中添加android:exported="true"。那么其他应用app就可以去访问TakeScreenshotService 功能(函数)了。


否则其他app访问systemUI的TakeScreenshotService 话,会报:

Permission Denial: Accessing service ComponentInfo 

java.lang.SecurityException: Not allowed to bind to service Intent

这个错误

转载于:https://my.oschina.net/u/589963/blog/316912

Androidstudio查看这段在AndroidManifest.xml中的代码是否需要修改或者优化<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/tubiao" android:label="@string/app_name" android:roundIcon="@drawable/tubiao" android:supportsRtl="true" android:networkSecurityConfig="@xml/network_security_config" android:theme="@style/Theme.MyExamProject"> <activity android:name=".AddActivityActivity" android:exported="false" /> <activity android:name=".AddFurnitureActivity" android:exported="false" /> <activity android:name=".AddCaregiverActivity" android:exported="false" /> <activity android:name=".AddOldActivity" android:exported="false" /> <activity android:name=".FacilityActivity" android:exported="false" /> <activity android:name=".EventsActivity" android:exported="false" /> <activity android:name=".AddActivity2" android:exported="false" /> <activity android:name=".UpdateIFActivity" android:exported="false" /> <activity android:name=".MyIFActivity" android:exported="false" /> <activity android:name=".MainActivity" android:exported="false" /> <activity android:name=".UpdateGamesActivity" android:exported="false" /> <activity android:name=".RegisterActivity" android:exported="false" /> <activity android:name=".PersonalCenterActivity" android:exported="false" /> <activity android:name=".LoginActivity" android:exported="false" /> <activity android:name=".DeleteGamesActivity" android:exported="false" /> <activity android:name=".BackActivity" android:exported="false" /> <activity android:name=".AddGamesActivity" android:exported="false" /> <activity android:name=".HomeActivity" android:exported="true" /> <activity android:name=".WelcomeActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值