2015-09-24 12 views
15

Sto scrivendo un SDK da utilizzare nell'app di hosting. Il mio SDK crea una notifica che deve riprendere l'app, nello stesso modo in cui premi il pulsante delle attività e seleziona l'app, oppure premi a lungo sul pulsante Home e seleziona la tua app.Riprendere la mia applicazione nello stesso modo in cui è stata ripreso dalla cronologia

Ecco quello che ho cercato di fare:

 PackageManager packageManager = context.getPackageManager(); 
     intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); 
     intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); 
     intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, flags); 
     Notification notification = new NotificationCompat.Builder(context). 
      setContentIntent(pendingIntent). 
      ... 
      build(); 

     getNotificationManager().notify(NOTIFICATION_ID, notification); 

Ho testato questo su applicazione host con l'attività una launcher con pranzare modalità "default" (nessuna modalità di lancio stata impostata nel manifesto) e il mio sdk ha anche 1 attività con la modalità pranzo "singleTask".

  1. Così ho il pranzo l'applicazione
  2. iniziare la mia attività SDK spara una notifica di prova nel metodo onCreat.
  3. Ho premuto a casa
  4. Ho fatto clic sulla notifica.

Dopo aver eseguito tali passaggi, mi aspetto di tornare alla mia attività, ma invece apre un'altra istanza dell'attività di avvio host. Cosa mi manca? Come faccio a fare questo lavoro?

+1

il flusso non è molto chiaro. –

+1

@RahulTiwari Quindi è il tuo commento;) –

+0

:) Non sono in grado di capire chiaramente alcune cose: l'SDK è un'app separata? o parte della tua domanda? entrambe le attività fanno parte della stessa applicazione? –

risposta

0

Secondo l'esigenza, l'app host deve impostare la modalità di avvio "singleTop" sull'attività di avvio e dal proprio SDK non è possibile impostarla. In qualche modo devi dire all'app host di impostare questo flag.

Una volta impostata la modalità di avvio "singleTop", riceverai nuovi intenti sostituendo il metodo onNewIntent() e la tua attività sarà nello stesso stato del precedente.

0

Nel file AndroidManifest.xml, andare alla dichiarazione di vostra attività principale e utilizzare android:launchMode="singleTask" come questo:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

In questo modo, se l'attività è già in esecuzione in background, il sistema porterà sulla locazione in primo piano l'utente continua a fare ciò che stava facendo prima che l'attività venisse trasmessa in background.

1

Se si desidera riprendere da dove ci si ferma, quindi rimuovere il flag "NEW_TASK". Non farà un nuovo compito. Spero che tu lo trovi utile nel tuo compito.

Problemi correlati