我有两个应用程序,每个应用程序都有一个活动,第一个按下按钮时执行此操作:
final private static String START_APP_INTENT = "com.example.app1.START_APP2";
Intent intent = new Intent(START_APP_INTENT);
startActivity(intent);
第二个应用程序的android清单文件中包含以下内容:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.app2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.example.app1.START_APP2" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
当我按下按钮时,我得到以下异常:
Caused by: android.content.ActivityNatFoundException: No Activity found to handle Intent { act=com.example.app1.START_APP2 }
我的app2有意图过滤器。为什么我得到这个例外?
答案 0 :(得分:1)
您的<intent-filter>
不正确。你有这个:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.example.app1.START_APP2" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
你需要这个:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.example.app1.START_APP2" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
第一个过滤器是为了让您的应用程序显示在可用应用程序列表中。第二个过滤器供其他应用程序使用。当应用程序调用{{1}}并且startActivity()
中未指定显式组件时,Android会自动将DEFAULT类别添加到Intent
。由于您在Intent
中没有获得DEFAULT类别,因此它不匹配,Android无法找到合适的活动来启动。