2012-04-03 18:58:01 +00:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#filter substitution
|
|
|
|
package org.mozilla.gecko;
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
import android.app.Application;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.ComponentName;
|
|
|
|
|
|
|
|
public class GeckoActivity extends Activity {
|
|
|
|
private boolean hasStarted = false;
|
|
|
|
private boolean isGeckoActivityOpened = false;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onPause() {
|
|
|
|
super.onPause();
|
|
|
|
|
|
|
|
// Avoid pause notifications in destroy path.
|
|
|
|
if (!isFinishing() && (getApplication() instanceof GeckoApplication))
|
|
|
|
((GeckoApplication) getApplication()).onActivityPause(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResume() {
|
|
|
|
super.onResume();
|
|
|
|
|
|
|
|
// Avoid resume notifications in startup path.
|
|
|
|
if (hasStarted && (getApplication() instanceof GeckoApplication)) {
|
|
|
|
((GeckoApplication) getApplication()).onActivityResume(this);
|
|
|
|
isGeckoActivityOpened = false;
|
|
|
|
} else {
|
|
|
|
hasStarted = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void startActivity(Intent intent) {
|
|
|
|
checkIfGeckoActivity(intent);
|
|
|
|
super.startActivity(intent);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void startActivityForResult(Intent intent, int request) {
|
|
|
|
checkIfGeckoActivity(intent);
|
|
|
|
super.startActivityForResult(intent, request);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void checkIfGeckoActivity(Intent intent) {
|
|
|
|
// Whenever we call our own activity, the component and it's package name is set.
|
|
|
|
// If we call an activity from another package, or an open intent (leaving android to resolve)
|
|
|
|
// component has a different package name or it is null.
|
|
|
|
ComponentName component = intent.getComponent();
|
2012-04-04 20:28:17 +00:00
|
|
|
isGeckoActivityOpened = false;
|
|
|
|
if (component != null &&
|
|
|
|
component.getPackageName() != null &&
|
|
|
|
component.getPackageName().equals("@ANDROID_PACKAGE_NAME@")) {
|
2012-04-03 18:58:01 +00:00
|
|
|
isGeckoActivityOpened = true;
|
2012-04-04 20:28:17 +00:00
|
|
|
}
|
2012-04-03 18:58:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isApplicationInBackground() {
|
|
|
|
return !isGeckoActivityOpened;
|
|
|
|
}
|
|
|
|
}
|