2012-03-27 6 views
2

Я использую «ActivityNotFoundException: Невозможно найти явный класс активности ...» при использовании эмулятора Eclipse для вызова активности другого приложения из приложения. Возможно, проблема может быть связана с тем, что я не могу загрузить/найти оба приложения одновременно, когда я нажимаю «Управление приложениями» в «Настройках». Это первый проект, который мне нужно назвать деятельностью другого приложения. Но я не уверен, что код правильный. Пожалуйста, помогите мне определить, есть ли ошибки в приведенных ниже фрагментах кода. Подчеркивается, что я могу установить поле действия намерения для достижения цели, но не нашел для этого учебного материала. Я узнал об использовании метода setComponent в вызывающем приложении и добавил android: экспортирует AndroidManifest.xml вызываемой активности. Заранее спасибо!ActivityNotFoundException при вызове активности другого приложения

Calling приложения в соответствующие исходный код: отношение AndroidManifest.xml

Intent intent = new Intent();     
intent.setComponent(new ComponentName("com.MyPackage", om.MyPackage.Activity1)); 
startActivity(intent); 

Calling приложения в:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".MainActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Activity1"> 
     <intent-filter> 
      <action android:name="com.MyPackage.Activity1" /> 
      <category android:name="android.intent.category.DEFAULT" />    
     </intent-filter> 
    </activity> 

</application> 

Соответствующий код AndroidManifest.xml деятельности другого приложения

<activity android:name=".Activity1" android:exported = "true">   
     <intent-filter> 
      <action android:name="com.MyPackage.Activity1" /> 
      <category android:name="android.intent.category.DEFAULT" />    
     </intent-filter> 
</activity> 

ответ

4

Прежде всего укажите, что вы пытаетесь начать активность в Application2 от деятельности в Application1

  • Вы должны дать им отдельные пространства имен
    • оба приложения теперь имеют com.MyPackage.* префикс
  • ИЛИ имен использования Activity1 и Activity2

Таким образом, вы будете иметь

com.MyPackage1.Activity1 
// and 
com.MyPackage2.Activity1 

Затем вы можете использовать этот код, чтобы начать Activity1 в MyPackage2 от MyPackage1.

// in file com.MyPackage1.Activity1 
Intent intent = new Intent(); 
intent.setComponent(new ComponentName("com.MyPackage2", "com.MyPackage2.Activity1")); 
startActivity(intent); 

И ваши AndroidManifest.xml файлы должны выглядеть следующим образом:

первая

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name="com.MyPackage1.Activity1" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 

второй

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name="com.MyPackage2.Activity1" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 

см связаны SO вопрос:
How to start activity in another application?

+0

Я по-прежнему получаю ActivityNotFoundException или ClassNotFoundException после внесения рекомендуемых изменений. Возможно, это связано с тем, что не удается правильно установить приложения на эмуляторе. В моих последних усилиях сначала я установил вызываемое приложение (которое содержит класс Activity1) с помощью команды adb. Затем я запускаю вызывающее приложение из Eclipse. Это генерирует ClassNotFoundException относительно Activity1, что, вероятно, вызвано тем, что вызываемое приложение больше не находится в эмуляторе по какой-то странной причине.Почему он больше не установлен? Как его решить, если это часть моей проблемы? Благодаря! – macrogeo

+0

Вы пытаетесь вызвать Activity в другом приложении? Я указывал на начало второй активности в том же приложении. См. Мой отредактированный ответ –

+1

Он работает! Спасибо, Марек! – macrogeo

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