mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
75 lines
2.5 KiB
Java
75 lines
2.5 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* 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 @ANDROID_PACKAGE_NAME@;
|
|
|
|
import android.app.ActivityManager;
|
|
import android.app.ActivityManager.RunningAppProcessInfo;
|
|
import android.app.NotificationManager;
|
|
import android.content.ActivityNotFoundException;
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.os.Process;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
|
|
import java.util.List;
|
|
|
|
import org.mozilla.gecko.GeckoAppShell;
|
|
|
|
public class NotificationHandler extends BroadcastReceiver {
|
|
private static final String LOGTAG = "GeckoNotificationHandler";
|
|
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
if (intent != null)
|
|
handleIntent(context, intent);
|
|
}
|
|
|
|
protected void handleIntent(Context context, Intent notificationIntent) {
|
|
// only fire the callback if the intent was clicked, not if it was cancelled
|
|
String action = notificationIntent.getAction();
|
|
if (App.ACTION_ALERT_CLEAR.equals(action))
|
|
return;
|
|
|
|
String appName = "";
|
|
Uri data = notificationIntent.getData();
|
|
if (data != null) {
|
|
appName = data.getQueryParameter("app");
|
|
if (appName == null)
|
|
appName = "@ANDROID_PACKAGE_NAME@.App";
|
|
}
|
|
|
|
sendIntent(context, App.ACTION_ALERT_CALLBACK,
|
|
appName,
|
|
data);
|
|
}
|
|
|
|
private void sendIntent(Context context, String action, String className, Uri data) {
|
|
Intent appIntent = new Intent(action);
|
|
|
|
if (TextUtils.isEmpty(className))
|
|
appIntent.setClassName(context, "@ANDROID_PACKAGE_NAME@.App");
|
|
else
|
|
appIntent.setClassName(context, className);
|
|
|
|
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
|
if (data != null)
|
|
appIntent.setData(data);
|
|
|
|
try {
|
|
Log.i(LOGTAG, "startActivity with intent: Action='" + appIntent.getAction() +
|
|
" appName='" + className + "'");
|
|
context.startActivity(appIntent);
|
|
} catch (ActivityNotFoundException e) {
|
|
Log.e(LOGTAG, "NotificationHandler Exception: ", e);
|
|
}
|
|
}
|
|
}
|