DO NOT MERGE Check caller for sending media key to telephony service am: d1641e8c27
am: 9477c1674c
Change-Id: If2edd8d386cd57f00221fedff3f118e6887cab61
This commit is contained in:
@@ -40,6 +40,7 @@ import android.os.IBinder;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
|
import android.os.Process;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.IBinder.DeathRecipient;
|
import android.os.IBinder.DeathRecipient;
|
||||||
@@ -750,7 +751,13 @@ public class MediaFocusControl implements OnFinished {
|
|||||||
synchronized(mRCStack) {
|
synchronized(mRCStack) {
|
||||||
if ((mMediaReceiverForCalls != null) &&
|
if ((mMediaReceiverForCalls != null) &&
|
||||||
(mIsRinging || (mAudioService.getMode() == AudioSystem.MODE_IN_CALL))) {
|
(mIsRinging || (mAudioService.getMode() == AudioSystem.MODE_IN_CALL))) {
|
||||||
dispatchMediaKeyEventForCalls(keyEvent, needWakeLock);
|
if (Binder.getCallingUid() != Process.SYSTEM_UID) {
|
||||||
|
// Prevent dispatching key event to the global priority session.
|
||||||
|
Slog.i(TAG, "Only the system can dispatch media key event "
|
||||||
|
+ "to the global priority session.");
|
||||||
|
} else {
|
||||||
|
dispatchMediaKeyEventForCalls(keyEvent, needWakeLock);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4141,6 +4141,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
case KeyEvent.KEYCODE_MEDIA_RECORD:
|
case KeyEvent.KEYCODE_MEDIA_RECORD:
|
||||||
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
|
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
|
||||||
case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: {
|
case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: {
|
||||||
|
ITelephony telephonyService = getTelephonyService();
|
||||||
|
if (telephonyService != null) {
|
||||||
|
try {
|
||||||
|
if (!telephonyService.isIdle()) {
|
||||||
|
// When phone is ringing or in-call, pass all media keys to it.
|
||||||
|
result &= ~ACTION_PASS_TO_USER;
|
||||||
|
}
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
Log.w(TAG, "ITelephony threw RemoteException", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((result & ACTION_PASS_TO_USER) == 0) {
|
if ((result & ACTION_PASS_TO_USER) == 0) {
|
||||||
// Only do this if we would otherwise not pass it to the user. In that
|
// Only do this if we would otherwise not pass it to the user. In that
|
||||||
// case, the PhoneWindow class will do the same thing, except it will
|
// case, the PhoneWindow class will do the same thing, except it will
|
||||||
|
|||||||
Reference in New Issue
Block a user