2013-12-05 3 views
1

У меня есть два приложения, каждый с одним видом деятельности в них, первый делает это при нажатии кнопки:Android: Есть один APK начать еще один

final private static String START_APP_INTENT = "com.example.app1.START_APP2"; 
Intent intent = new Intent(START_APP_INTENT); 
     startActivity(intent); 

Второе приложение имеет следующие в андроида файле манифеста :

<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 } 

мне на pp2 имеет этот фильтр намерений. Почему я получаю это исключение?

+0

Тупой вопрос: у вас есть оба приложения, установленные на вашем телефоне? Кроме этого: просмотрели ли вы http://developer.android.com/reference/android/content/Intent.html? – DigCamara

ответ

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> 

Первый фильтр так, что ваше приложение будет отображаться в списке доступных приложений. Второй фильтр используется другим приложением. Когда приложение вызывает startActivity(), и нет явного компонента, указанного в Intent, Android автоматически добавляет категорию DEFAULT к Intent. Поскольку у вас нет категории DEFAULT в вашем <intent-filter>, она не соответствует, и Android не может найти подходящую работу для запуска.

Смежные вопросы