2017-06-08 94 views
0

所以這裏是我在這裏想要實現的......我們在設備上安裝了兩個android APK ...每個APK都可以強制自己處於前臺(這不是應用程序一般大衆都會用,所以沒關係......)FLAG_ACTIVITY_REORDER_TO_FRONT無法在某些設備上工作

  • 所以我們用activity a來啓動任務a。
  • 然後我們用活動b啓動任務b。
  • 然後活動&任務要去前臺
  • 在某一點後(這可以發生在任何時間),活動和任務想去前景

所以我們有這個代碼工作使用以下代碼:

Intent i = new Intent(Variables.context, HomeActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(i); 

太棒了!

但是,在運行4.2.2(也可能是其他人)的電話上,我們注意到這種行爲與預期不符。以下兩件事情可能發生。

讓我們假設活動a &任務a在前臺,但想要使活動b和任務b到達前臺它不起作用。

但是如果沒有任務是在前臺和家庭發射集中,然後活動B和任務B被預期彈出到前臺。

下面是從應用的一個我清單的一個示例:

<activity 
      android:name="some.app.id.goes.here" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:windowSoftInputMode="adjustPan"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

我曾嘗試加入這一行的代碼:

android:launchMode="singleTop" 

,它仍然無法正常工作。

有什麼我失蹤?

的幾個注意事項:

  • 活動A可以是任何應用程序,而不僅僅是我們開發的應用程序,從發生停止這排除了活性的。我們使用谷歌瀏覽器/ Google地圖/ Google Play商店獲得了相同的結果。
  • 我們不覆蓋onNewIntent
+0

你爲什麼不創建活動堆棧的數組列表將非常容易管理。 –

+1

供您參考,你可以做一些事情[這樣的](https://stackoverflow.com/a/38326848/5860777)。 –

回答

0

那麼,什麼是痛苦這是...

這裏是解決辦法,我不得不做...

private void generateNotificationToPopActivityToTop(final int id, Context context, String message) { 
     Intent notificationIntent = new Intent(context, HomeActivity.class); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentTitle(context.getString(R.string.app_name)) 
       .setFullScreenIntent(intent, true) 
       .setPriority(NotificationCompat.PRIORITY_MAX) 
       .setContentText(message) 
       .setAutoCancel(true) 
       .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS); 
     final NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(id, mBuilder.build()); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       mNotificationManager.cancel(id); 
      } 
     }, 1000); 

    } 
相關問題