Android:在打开通知推送后恢复应用

时间:2017-04-20 09:23:57

标签: java android android-intent push-notification

这是我的问题:

我有一个包含3项活动的申请。

-SplashscreenActivity(Launcher - Main)

-LoginActivity

-HomeActivity

- 申请被杀: - 正常过程:

  1. 当我通过仪表板图标运行应用程序时,我会通过启动,(我已登录),然后进入主页。 如果我将应用程序放在后台并通过仪表板图标将其提升,我会回到家中。一切都很正常。
  2. - 申请被杀: - 但是,对于以下过程:

    1. 我收到推送通知。我通过这个推动运行应用程序,我经历了飞溅,然后回到家里。 但是,如果我将应用程序放在后台,并通过仪表板图标将其提升,我会再次系统地浏览。这是问题所在!
    2. 这是我的manifest.xml(已编辑

      <activity           
          android:name="my.package.SplashscreenActivity"
          android:label="@string/app_name"
          android:noHistory="false"
          android:screenOrientation="portrait">
          <intent-filter>
               <action android:name="android.intent.action.MAIN"/>
               <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>
      </activity>
      
      <activity
          android:name="my.package.LoginActivity"
          android:label="@string/app_name"
          android:noHistory="false"
          android:screenOrientation="portrait"
          android:windowSoftInputMode="adjustResize">
      </activity>
      
      <activity
          android:name="my.package.HomeActivity"
          android:label="@string/app_name"
          android:noHistory="false"
          android:launchMode="singleTask"
          android:screenOrientation="portrait"
          android:windowSoftInputMode="adjustResize">
      </activity>
      

      这是我的推送通知BroadcastReceiver(sendNotificationMethod)

      private void sendNotification(String message, String title, int count, String type, long threadId)
      {
          Activity m_activity;
          if (App.getInstance().m_currentActivity != null && App.getInstance().isOnPause())
              m_activity = App.getInstance().m_currentActivity;
          else
              m_activity = null;
      
          PendingIntent pendingIntent = null;
          Intent intent = null;
      
          if (m_activity != null)
          {
              intent = new Intent(this, m_activity.getClass());
              intent.putExtra("type", type);
              intent.setData((Uri.parse("foobar://" + SystemClock.elapsedRealtime())));
              pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
          }
          else
          {
              PackageManager pm = getPackageManager();
              intent = pm.getLaunchIntentForPackage("my.package");
              intent.setAction(Intent.ACTION_MAIN);
              intent.addCategory(Intent.CATEGORY_LAUNCHER);
              intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              intent.putExtra("type", type);
              pendingIntent = PendingIntent.getActivity(App.getInstance(), 0, intent, 0);
          }
      
          Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
          NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                  .setSmallIcon(R.mipmap.logo_push_lolilol)
                  .setColor(App.getInstance().getResources().getColor(R.color.colorPrimary))
                  .setContentTitle(title)
                  .setContentText(message)
                  .setAutoCancel(true)
                  .setSound(defaultSoundUri)
                  .setContentIntent(pendingIntent)
                  .setStyle(new NotificationCompat.BigTextStyle()
                          .bigText(message));
      
          NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      
      
          notificationManager.notify((int)threadId, notificationBuilder.build());
      }
      

      你有&#34;解决方案&#34;?

      提前谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个

intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);