【发布时间】:2021-10-10 06:17:42
【问题描述】:
我需要将我的应用程序的一个模块公开给多个应用程序。因为,我没有指定活动的任何权限或公开属性。
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Transparent">
</activity>
有了这个,我可以启动应用程序,我也可以通过调用意图从其他应用程序执行活动。
但是,当我与 SonarQube 集成时,它会显示漏洞并说明以下问题。
对此导出的组件实施权限。
为了解决这个问题,我尝试了以下方法。
- 如果我实现了引用权限,则漏洞被删除,但我无法运行应用程序(我的意思是不能对其他应用程序的任何操作进行操作)。
在我的应用中,我已经定义了权限
<permission android:name="com.myApp.NORMAL_PERMISSION"
android:description="@string/perm_desc_NORMAL_PERMISSION"
android:label="@string/perm_label_NORMAL_PERMISSION"
android:protectionLevel="normal" />
我将此权限用于我的活动,如下所示。
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:permission="com.myApp.NORMAL_PERMISSION"
android:theme="@style/Theme.Transparent">
但是,我无法通过调用意图从其他应用程序执行任何操作。但是,漏洞已得到修复。
-
如果我将以下字段添加到活动中,它仍然在漏洞 android:exported="true" 下列出
-
如果它的 android:exported="false",漏洞被移除,但应用程序完全无法运行
让我知道修复此漏洞的任何其他方法。
【问题讨论】:
标签: android android-studio kotlin sonarqube android-manifest