【发布时间】:2016-09-23 14:15:28
【问题描述】:
我想启动一个带有隐式意图的应用程序,但在该应用程序启动之前,我需要处理该意图并启动一个状态机,然后加载一个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()。
知道我是否可以结合使用这些方法吗?
我的意思是使用隐式(或显式)意图从另一个应用程序加载一个类(不是BroadcastReceiver 或Activity)?
【问题讨论】:
-
“我想启动一个带有隐含意图的应用程序”——其他一些应用程序正在启动您的应用程序。为什么该应用程序会使用隐式
Intent来启动您的应用程序?谁将编写这个其他应用程序? “但是我无法控制其他应用程序是否会响应同样的意图”——你通常缺乏对隐式Intents的控制。您无法控制其他应用程序是否有响应您的隐式Intent的活动。 “我的意思是使用隐式(或显式)意图从另一个应用程序加载一个类(不是 BroadcastReceiver 或 Activity)?” - 没有什么可以解决您的问题。 -
感谢您的回复,我有这两个应用程序的代码。
-
那你为什么要使用隐式
Intent?如果您控制这两个应用程序,并且希望应用程序 A 启动应用程序 B,则使用显式Intent。或者,从隐式Intent开始,使用PackageManager确定 App B 中的哪个组件支持Intent,并使用该信息使Intent显式。 -
我不想使用隐式意图,但认为它是比显式意图更好的解决方案。另外,我使用包管理器来检查它,正如你所建议的。现在,这适用于隐式意图 + 一个活动,只是为了处理我的意图并启动状态机,但我认为这种方法有点脏。
标签: android android-intent broadcastreceiver