只允许 Android OS 打开启动器 activity

Allow only Android OS to open the launcher activity

我的 Android 应用程序存在一个安全漏洞,恶意应用程序可以打开我的应用程序。我在 Launcher Activity.

中使用了以下意图过滤器
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

此 Intent 过滤器使 Main Activity 暴露给其他应用程序。有什么方法可以仅将 Main Activity 公开给 Android OS 而不是其他应用程序。据我了解我们不能使用 "exported=false".

Is there any way to expose the Main Activity only to the Android OS and not to other applications.

不像你定义的那样。

每个 activity,无论是否导出,都是 "exposed" 到 "the Android OS"。否则,它们将无法使用,即使是应用程序本身也是如此。导出的 activity 和未导出的区别在于第三方应用程序是否可以启动 activity.

主屏幕本身只是一个应用程序。一台设备至少预装了一个主屏幕,用户可以从 Play 商店或其他地方安装其他主屏幕。因此,从您的应用程序的角度来看,主屏幕是第三方 activity.

In my Android app there is a security vulnerability that my app can be opened by a malicious application

导出 activity 本身并不是 "security vulnerability"。你的论点类似于说 "there is a security vulnerability in my Web site — how do I allow my home page to only be opened from a Google search result, but not by a bookmark or any other Web site?".

不必要地导出 活动从安全角度来看是不好的,但启动器 activity 是必要导出的。