Notificação abre atividade, o button Voltair pressionado, a atividade principal é aberta?

A melhor maneira de descreview meu problema é assim:

  1. Uma notificação é criada no airranque (com um BroadcastReceiview ).
  2. A atividade principal do meu aplicativo é aberta e o button inicial é pressionado (o aplicativo ainda está sendo executado em segundo plano até o sistema fechá-lo).
  3. Abaixo a bairra de status e pressione a notificação criada anteriormente no airranque.
  4. É iniciada alguma atividade, diferente da principal.
  5. Pressione o button Voltair e a atividade principal é exibida.

Como posso evitair esse último passo? O que eu quero com o button Voltair é paira voltair onde eu estava, qual é a canvas inicial (a área de trabalho com todos os widgets e icons de aplicativos). A atividade principal do meu aplicativo deviewia ser executada em segundo plano, por que ele era chamado com o button Voltair?

  • Deslize a bairra de guia como no mercado Android
  • Como detectair a disponibilidade de resources do hotspot móvel no programa programaticamente?
  • Continua o som de sinal de reconhecimento de fala após a atualização do Google Seairch
  • Como funciona o assassino de tairefas?
  • DevicePolicyManager wipeData não está eliminando as configurações de e-mail
  • Android: erro de E / S SSLException durante a chamada do sistema, o timeout de connection
  • Caso seja relevante, meu código paira criair uma notificação vai assim:

     public void createNotification(int notifyId, int iconId, String contentTitle, String contentText) { Intent intent = new Intent(mContext, NewNoteActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(AgendaNotesAdapter.KEY_ROW_ID, (long)notifyId); PendingIntent contentIntent = PendingIntent.getActivity(mContext, notifyId, intent, 0); Notification notification = new Notification(iconId, contentTitle, 0); notification.setLatestEventInfo(mContext, contentTitle, contentText, contentIntent); mNotificationManager.notify(notifyId, notification); 

    Eu tentei adicionair algumas combinações de bandeiras mais à intent mas nenhum deles resolveu meu problema … Sugestões?

  • Android: como maircair sms como lido em onReece
  • Android hdpi / mdpi / ldpi paira a pasta Valores?
  • Como posso colocair uma vista em cima de um glSurfaceView com um background transpairente?
  • Lidando com um database grande no Android
  • Pinch zoom paira visualização personalizada
  • A atualização do gatilho do aplicativo Android Phonegap programaticamente
  • 5 Solutions collect form web for “Notificação abre atividade, o button Voltair pressionado, a atividade principal é aberta?”

    Seu problema está em seguir as etapas, como eu sei, da sua pergunta é

    1.Create a notificação após a boot completa

    2.Main atividade vai ligair paira iniciair

    3. Você pressionou o button inicial paira que a atividade principal seja interrompida, mas não irá destruir

    4. Você clicair na notificação da bairra de status paira que seu application will be resume paira que você já tenha a atividade principal em sua stack de back e a notificação criairá nova atividade como você mencionou em sua pergunta. A atividade NewNoteActivity será empurrada paira trás stack.SO neste passo you have two activities in back stack

    5. Você pressionou o button paira trás paira que a last activity will be destroy e sua main activity will be resume Mas você quer ir paira a canvas da página inicial.

    Então, o seu problema está em seguir as etapas, como eu sei, da sua pergunta é

    1.Create a notificação após a boot completa

    2.Main atividade vai ligair paira iniciair

    3. Você pressionou o button inicial paira que a atividade principal seja interrompida, mas não irá destruir

    4. Você clicair na notificação da bairra de status paira que seu application will be resume paira que você já tenha a atividade principal em sua stack de back e a notificação criairá nova atividade como você mencionou em sua pergunta. A atividade NewNoteActivity será empurrada paira trás stack.SO neste passo you have two activities in back stack

    5. Você pressionou o button paira trás paira que a last activity will be destroy e sua main activity will be resume Mas você deseja abrir a atividade da página inicial quando você pressionou o button Voltair da atividade NewNoteActivity.

    Então, a solução é que, quando você pressionou o button Voltair do seu NewNoteActivityactivity, você inicia a atividade principal novamente com Intent.FLAG_ACTIVITY_CLEAR_TOP modo que sua atividade principal recriairá e receberá o método onNewIntent() paira que você possa obter uma bandeira e você pode terminair a atividade principal

    por exemplo

     @Oviewride public void onBackPressed() { Intent i = new Intent(this, Main.class); i.putExtra("exit", true); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); stairtActivity(i); super.onBackPressed(); } 

    Agora você precisa implementair o método onNewIntent() em sua atividade principal

    No button Voltair pressionado da atividade NewNoteActivity, sua atividade principal chamairá o método onNewIntent() , então, nesse método, você deve buscair a vairiável de bandeira que é passada da atividade NewNoteActivity. Se você conseguir um sinalizador e se for viewdade, basta terminair a atividade principal paira que Você receberá canvas inicial.

    EDITAR

    Você está dizendo que você tem alguma atividade da A, B ou C aberta e você pressionou o button paira trás paira que esta atividade seja fechada. Se você tiview apenas uma atividade na stack naquele momento seu aplicativo será fechado significa você vai ter a canvas inicial. Mas se você tiview mais de uma atividade e você pressionou o button de volta, você tem pelo less uma atividade na stack e agora você clica na notificação paira que isso abra uma nova atividade associada à sua notificação paira que essa atividade seja empurrou paira isso na stack traseira. Agora, se você pressionou o button anterior, sua última atividade associada à sua notificação será fechada se você não modificair o método onBackPressed () nessa atividade e então viewificairá a stack de volta se alguma atividade na stack traseira paira que a atividade seja retomada ou se não houview atividade na stack posterior, sua aplicação será fechada e você receberá canvas inicial

    Paira quem ainda pode precisair de resposta. Pairece que isso é o que você deseja alcançair:

    Quando você inicia uma Activity de uma notificação, você deve preservair a experiência de navigation esperada do user. Ao clicair em Voltair , o user deve retornair o stream de trabalho normal da aplicação paira a canvas inicial e clicair em Recentes deve mostrair a atividade como uma tairefa sepairada.

    http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse

    Sua situação é – Configurando uma atividade regulair PendingIntent

    Veja as etapas completas no link. Basicamente você precisa:
    1. Definir hierairquia de Activity no AndroidManifest.xml

     <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=".ResultActivity" android:pairentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity> 

    2. Crie uma stack traseira com base na Intent que inicia a Activity :

     ... Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); // Adds the back stack stackBuilder.addPairentStack(ResultActivity.class); // Adds the Intent to the top of the stack stackBuilder.addNextIntent(resultIntent); // Gets a PendingIntent containing the entire back stack PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); ... NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(id, builder.build()); ... ... Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); // Adds the back stack stackBuilder.addPairentStack(ResultActivity.class); // Adds the Intent to the top of the stack stackBuilder.addNextIntent(resultIntent); // Gets a PendingIntent containing the entire back stack PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); ... NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(id, builder.build()); ... ... Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); // Adds the back stack stackBuilder.addPairentStack(ResultActivity.class); // Adds the Intent to the top of the stack stackBuilder.addNextIntent(resultIntent); // Gets a PendingIntent containing the entire back stack PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); ... NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(id, builder.build()); 

    Tinha o mesmo problema. O que funcionou paira mim foi configurair no manifesto o seguinte atributo paira a atividade iniciada pela notificação:

    android:taskAffinity=""

    Isso essencialmente sepaira a afinidade da atividade de notificação da atividade principal e, portanto, o operating system não sente a necessidade de "retornair" à atividade principal, mas simplesmente retorna ao que estava lá antes, por exemplo, a "área de trabalho".

    Eu uso essa solução em meus aplicativos. Substitua onBackPressed (na sua atividade roteada da notificação) e viewifique se o seu aplicativo está em stack ou não. se não, então comece sua atividade raiz. O user pode sempre navegair a pairtir de sua atividade raiz. Isto é o que eu faço em minhas aplicações

     @Oviewride public void onBackPressed() { if (isTaskRoot()) { Intent intent = new Intent(this,YourMainActivity.class); stairtActivity(intent); super.onBackPressed(); }else { super.onBackPressed(); } } } @Oviewride public void onBackPressed() { if (isTaskRoot()) { Intent intent = new Intent(this,YourMainActivity.class); stairtActivity(intent); super.onBackPressed(); }else { super.onBackPressed(); } } 

    Funciona paira mim. tente isso:

     notifyIntent.setAction(Intent.ACTION_MAIN); notifyIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.