2010-07-15 5 views
0

Как мне запустить приложение из другого приложения? (Они не будут упаковывать вместе)Как мне запустить приложение из другого приложения?

--update

Manifest второго приложения:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.helloandroid" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".HelloAndroid" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <category android:name="android.intent.category.HOME"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity android:name=".HelloAndroid"> 
      <intent-filter> 
       <action android:name="com.example.helloandroid.HelloAndroid" /> 
      </intent-filter> 
     </activity> 

    </application> 


</manifest> 

звоню его:

startActivity(new Intent("com.example.helloandroid.HelloAndroid")); 

и бросает:

07-16 15:11:01.455: ERROR/Desktop(610): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.helloandroid.HelloAndroid } 

Ralated:
How to launch android applications from another application

ответ

4

В первом приложении, вы должны модифицировать AndroidManifest.xml. В частности, вы собираетесь добавить пользовательские action в intent-filter деятельности, которую вы хотите запустить из где:

<activity android:name="FirstApp"> 
    <intent-filter> 
    <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
    </intent-filter> 
</activity> 

Затем, в вашем втором приложении вы используете это действие, чтобы начать деятельность:

startActivity(new Intent("com.example.foo.bar.YOUR_ACTION")); 

Что касается ваших комментариев:

Похоже, если я изменить имя по умолчанию «android.intent.action.MAIN» Я не могу запустить приложение из Eclipse, в Virtual Device

Имейте в виду, вы можете иметь в качестве многие действия, как вы хотите ..., например:

<activity android:name="FirstApp"> 
    <intent-filter> 
    <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
    <action android:name="android.intent.action.MAIN" /> 
    </intent-filter> 
</activity> 
+0

Похоже, если я сменю имя по умолчанию «android.intent.action.MAIN» Я не могу запустить приложение от Eclipse в виртуальном устройстве. Смогу ли я запустить его на телефоне в качестве автономного приложения? –

+0

Сделал, как вы говорите, и бросает: android.content.ActivityNotFoundException: Никакой активности не найдено для обработки Intent {act = com.example.helloandroid.HelloAndroid}. Любая идея, что может быть неправильным? (теперь я добавил новую активность вместо изменения существующей) –

+0

Я отредактировал свой ответ. Кроме того, я хотел бы увидеть AndroidManifest из первого приложения и исходный код вашего второго действия. – Cristian

1

Эти вопросы, кажется, похож на тот, который я ответил ранее today.

Если вы просто хотите, чтобы начать, как вы начали его из пусковой установки:

Intent intent = new Intent("android.intent.action.MAIN"); 
intent.setComponent(new ComponentName("PACKAGE NAME", "CLASS")); 
startActivity(intent); 
+0

то же самое из предыдущего ответа , с дополнительным вопросом в финале: «android.content.ActivityNotFoundException: Невозможно найти явный класс активности {com.example.helloandroid/HelloAndroid}; объявили ли вы эту активность в вашем AndroidManifest.xml?" –