GCM How do I detect if app is open and if so pop up an alert box, instead of normal notification flow?

后端 未结 4 915
猫巷女王i
猫巷女王i 2021-02-03 13:47

I have an app where I want to build 2 different flow\'s in:

  • 1.a App is open on any activity
  • 1.b App show\'s an alertbox where user can choose to go to

4条回答
  •  独厮守ぢ
    2021-02-03 14:18

    A solution I just found does require a GET_TASK permission:

    ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
    List services = activityManager
            .getRunningTasks(Integer.MAX_VALUE);
    boolean isActivityFound = false;
    
    if (services.get(0).topActivity.getPackageName().toString()
            .equalsIgnoreCase(getApplicationContext().getPackageName().toString())) {
        isActivityFound = true;
    }
    
    Log.d("GCM", "Activity open: "+isActivityFound);
    

    UPDATE

    In order to launch an alertbox (which isn't possible here) I created a custom alert box and let it use the AlertBox as theme. This is the activity in AndroidManifest.xml:

    
    

    And the custom activity:

    public class NotificationAlertActivity extends Activity implements
            Observer, OnClickListener {
    
        private String pendingObjectId;
        private ModelFlag modelFlag;
        private Database db;
        private ArrayList discussions;
        private ArrayList tips;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_notification_alert);
    
            findViewById(R.id.button_yes).setOnClickListener(this);
            findViewById(R.id.button_no).setOnClickListener(this);
    
        }
    

    I updated the onHandleIntent with this bit:

    if (isActivityFound) {
        Intent dialogIntent = new Intent(getBaseContext(),
                NotificationAlertActivity.class);
        dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getApplication().startActivity(dialogIntent);
    }
    

提交回复
热议问题