2013-02-15 4 views
1

Quand j'utilise startActivity d'un récepteur comme celui-ci:Android: startActivity d'un récepteur commence également l'activité principale (action.MAIN/category.LAUNCHER)

public void onReceive(final Context context, final Intent intent) { 
     Intent i = new Intent(); 
     i.setClass(context, NewClass.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     i.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
     context.startActivity(i); 
} 

dans certains appareils (Galaxy S2 Android: 4.0.4 par exemple) - il commence aussi dans les backgrouns l'activité MAIN (avec action.MAIN et category.LAUNCHER).

-Modifier -

AndroidManifest:

<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:debuggable="true"> 
    <receiver android:name="com.my.app.MyBroadcastReceiver" android:enabled="true"> 
     <intent-filter android:priority="99999"> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 
    <activity android:name="com.my.app.Main"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.my.app.NewClass"> 
     <intent-filter> 
      <action android:name="android.intent.action.NEWSCLASS" /> 
     </intent-filter> 
    </activity> 
</application> 

Pourquoi?

Répondre

0

Cela se produit parce que vous AndroidManifest.xml l'activité a précisé deux choses:

   <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
+0

Lorsque j'ouvre mon application, je veux utiliser Main.class, mais dans mon Reciver onReceive - je veux commencer NewClass.class – Erez

+0

Je comprends cela, mais Android fonctionne comme ceci: quand vous démarrer une autre activité L'activité déjà démarrée passe en arrière-plan – AlexGo

+0

Vous pouvez supprimer de AndroidManifest.xml les lignes que j'ai décrites dans ma réponse. – AlexGo

0

Déposez votre fichier manifest peut aider

Supprimer dans le manifeste filtre l'intention de NewClass. MISE À JOUR: le filtre d'intention n'est pas nécessaire car vous créez une intention explicite. Le filtre d'intention est utile pour les intentions implicites.

Et essayez de supprimer tous les indicateurs que vous avez définis avant startActivity. MISE À JOUR: Regarder l'intention.setAction

+0

J'ai modifié ma question et ajouté le manifeste – Erez

Questions connexes