android隐式意图调用应用程序组件

android隐式意图调用应用程序组件,android,android-intent,Android,Android Intent,我试图测试如何使用隐式意图来调用同一应用程序中的组件(我使用的是Android 4.4) 我有一个主要活动和一个活动2。在AndroidManifest.xml中 <activity android:name="com.android.intenttest.Activity2" android:label="@string/title_activity_activity2" > <intent-filter>

我试图测试如何使用隐式意图来调用同一应用程序中的组件(我使用的是Android 4.4)

我有一个主要活动和一个活动2。在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>
它无法调用Activity2(我可以看到Toast)。有人能指出我做错了什么吗

谢谢

编辑:

我稍微修改了场景,无法解释我观察到的情况。我有两个应用程序:应用程序1和应用程序2

应用程序1有:

  • 活动2:使用操作“com.android.intettest.testAction”和类别默认值的意图过滤器
  • 活动3:无意图过滤器
应用程序2有:

  • 活动2:使用操作“com.android.intettest.testAction”和类别默认值的意图过滤器
在应用程序1的活动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();
 }
我希望弹出一个选择器对话框,要求在应用程序1的Activity2和应用程序2的Activity2之间进行选择

但它总是显示App2中的Activity2。有人能解释一下原因吗


谢谢。

对于问题的第一部分,意向过滤器需要如下所示:

 <activity
        android:name="com.android.intenttest.Activity2"
        android:label="@string/title_activity_activity2" >
        <intent-filter>
            <action android:name="com.android.intesttest.Activity2Action"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
  </activity>
 <activity
        android:name="com.android.intenttest.Activity2"
        android:label="@string/title_activity_activity2" >
        <intent-filter>
            <action android:name="com.android.intesttest.Activity2Action"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
  </activity>
In order to receive implicit intents, you must include the CATEGORY_DEFAULT 
category in the intent filter. The methods startActivity() and 
startActivityForResult() treat all intents as if they declared the 
CATEGORY_DEFAULT category. If you do not declare this category in your intent 
filter, no implicit intents will resolve to your activity.