Android:class 中的威胁隐式意图不是 Activity 或 BroadcastReceiver

Android: Threat implicit intent in a class that is not an Activity or BroadcastReceiver

我想启动一个带有隐式意图的应用程序,但在该应用程序启动之前,我需要处理该意图并启动一个状态机,然后该状态机将加载 Activity

我可以使用广播接收器或 activity

<receiver android:name="com.13.MyBroadcastReceiver">
    <intent-filter>
        <action android:name="com.13.StartStateMachine" />
    </intent-filter>
</receiver>

但是我无法控制其他应用程序是否会响应相同的意图。

<activity android:name="com.13.MyReceiverActivity">
    <intent-filter>
        <action android:name="com.13.StartStateMachine" />
    </intent-filter>
</activity >

但这不是干净的,我可以做一些处理onCreate()然后finish()

知道我是否可以结合使用这些方法吗? 我的意思是使用隐式(或显式)意图从另一个应用程序加载 class(不是 BroadcastReceiverActivity)?

由于这两个应用都是您的,欢迎您使用任何您想要的 IPC 机制。

使用 Activity 的优点是您可以选择说所有内容都在同一任务中。因此,当应用程序 A 启动应用程序 B 的 activity 时,这可以是一个任务。任何其他 IPC 机制都会强制您开始新任务。

因此,正如我在评论中建议的那样,使用 PackageManager 将隐式 Intent 转换为显式。然后,使用您想要的任何 IPC。如果您想使用 "broadcast"(明确的 Intent 确实使它更像 "narrowcast"),欢迎您这样做。

恕我直言,说一个 activity 将控制权转移给另一个 activity,也许使用 finish(),并不是真的 "dirty"。毕竟,应用程序使用的许多启动画面最终都是这样做的。恕我直言,使用任何其他 IPC 机制启动 activity,当 startActivity() 可以正常工作时,是 "dirty".