【发布时间】:2014-05-13 03:07:51
【问题描述】:
我正在尝试测试如何使用隐式 Intent 来调用同一应用中的组件(我使用的是 Android 4.4)。
我有一个 MainActivity 和一个 Activity2。在 AndroidManifest.xml 中,
<activity
android:name="com.android.intenttest.Activity2"
android:label="@string/title_activity_activity2" >
<intent-filter>
<action android:name="com.android.intesttest.Activity2Action"/>
</intent-filter>
</activity>
在 MainActivity 中,我尝试使用:
Intent intentObj = new Intent();
intentObj.setAction("com.android.intesttest.Activity2Action");
if(intentObj.resolveActivity(getPackageManager()) != null){
startActivity(intentObj);
}
else{
Toast.makeText(getApplicationContext(), "No matching activity found", Toast.LENGTH_SHORT).show();
}
它无法调用 Activity2(我可以看到 Toast)。有人可以指出我做错了什么吗?
谢谢。
编辑:
我稍微修改了场景,无法解释我观察到的情况。我有两个应用程序:应用程序 1 和应用程序 2。
应用 1 有:
- 活动 2:意图过滤器,带有操作“com.android.intenttest.testAction”和类别 DEFAULT
- 活动 3:无意图过滤器
应用 2 有:
- 活动 2:意图过滤器,带有操作“com.android.intenttest.testAction”和类别 DEFAULT
在 App 1 的 Activity 3 中,我有:
Intent intentObj = new Intent();
intentObj.setAction("com.android.intesttest.testAction");
if(intentObj.resolveActivity(getPackageManager()) != null){
startActivity(intentObj);
}
else{
Toast.makeText(getApplicationContext(), "No matching activity found", Toast.LENGTH_SHORT).show();
}
我希望会弹出一个选择器对话框并要求在 App 1 的 Activity2 和 App 2 的 Activity2 之间进行选择。
但它总是显示来自 App2 的 Activity2。有人能解释一下为什么吗?
谢谢。
【问题讨论】: