我正在尝试启动另一个apk中定义的活动,在其AndroidManifest.xml中,它定义了一个活动并使用了一个动作,但没有定义任何类别。
格式类似于
<activity name="...">
<intent-filter>
<action android:name="action name">
<intent-filter>
</activity>
我的代码正在关注
Intent i = new Intent("action name");
startActivity(i);
然而,我的apk与未捕获的ActivityNotFound异常崩溃,日志读取 找不到活动来处理意图......“
有什么想法吗?
Thanx很多。
答案 0 :(得分:17)
查看Intent documentation,它说还请注意此处提供的DEFAULT类别:Context.startActivity
方法在未明确指定其组件名称时解析您的活动是必需的。 / strong>如果活动的IntentFilter定义不包含该类别,则无法使用startActivity启动它。尝试使用setClassName方法,并将其传递给您尝试启动的包类和活动类。
答案 1 :(得分:14)
使用startActivity(...)时,不能有空类别。
添加默认类别,这将完成工作:
<intent-filter>
<action android:name="action name" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
答案 2 :(得分:0)
您需要定义您在Manifest中启动的活动。确保您提供了与您要启动的其他apk中的活动相同的<intent-action
(和活动名称)。