gecko-dev/mobile/android/base/GeckoActivity.java.in

69 lines
2.2 KiB
Java
Raw Normal View History

/* 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();
isGeckoActivityOpened = false;
if (component != null &&
component.getPackageName() != null &&
component.getPackageName().equals("@ANDROID_PACKAGE_NAME@")) {
isGeckoActivityOpened = true;
}
}
public boolean isApplicationInBackground() {
return !isGeckoActivityOpened;
}
}