blob: 1cd922acb2d747f00a4de1cd408c99022d231cdb [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package com.android.server.telecom;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
import android.telecom.Log;
import android.telecom.TelecomManager;
import com.android.server.telecom.ui.TelecomDeveloperMenu;
/**
* Receiver for "secret codes" broadcast by Dialer.
*/
public class DialerCodeReceiver extends BroadcastReceiver {
// Copied from TelephonyIntents.java.
public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
// Enables extended logging for a period of time.
public static final String TELECOM_SECRET_CODE_DEBUG_ON = "823241";
// Disables extended logging.
public static final String TELECOM_SECRET_CODE_DEBUG_OFF = "823240";
// Writes a MARK to the Telecom log.
public static final String TELECOM_SECRET_CODE_MARK = "826275";
// Opens the Telecom developer menu.
public static final String TELECOM_SECRET_CODE_MENU = "828282";
private final CallsManager mCallsManager;
DialerCodeReceiver(CallsManager callsManager) {
mCallsManager = callsManager;
}
@Override
public void onReceive(Context context, Intent intent) {
if (SECRET_CODE_ACTION.equals(intent.getAction()) && intent.getData() != null &&
intent.getData().getHost() != null) {
if (intent.getData().getHost().equals(TELECOM_SECRET_CODE_DEBUG_ON)) {
Log.i("DialerCodeReceiver", "Secret code used to enable extended logging mode");
Log.setIsExtendedLoggingEnabled(true);
} else if (intent.getData().getHost().equals(TELECOM_SECRET_CODE_DEBUG_OFF)) {
Log.i("DialerCodeReceiver", "Secret code used to disable extended logging mode");
Log.setIsExtendedLoggingEnabled(false);
} else if (intent.getData().getHost().equals(TELECOM_SECRET_CODE_MARK)) {
Log.i("DialerCodeReceiver", "Secret code used to mark logs.");
// If there is an active call, add the "log mark" for that call; otherwise we will
// add a non-call event.
Call currentCall = mCallsManager.getActiveCall();
Log.addEvent(currentCall, LogUtils.Events.USER_LOG_MARK);
} else if (intent.getData().getHost().equals(TELECOM_SECRET_CODE_MENU)) {
Log.i("DialerCodeReceiver", "Secret code used to open developer menu.");
Intent confirmIntent = new Intent(context, TelecomDeveloperMenu.class);
confirmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivityAsUser(confirmIntent, UserHandle.CURRENT);
}
}
}
}