Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 018c3c6e authored by Matthew Xie's avatar Matthew Xie
Browse files

Add MODIFY_PHONE_STATE permission to access Bluetooth service in Phone app

Enforce MODIFY_PHONE_STATE permission for some HeadsetService APIs that
only provided for Phone app for phone stat change notifications
bug 7115021

Change-Id: I62e3f429f4205feb50e123ee94b4c468999804a6
parent a6ad2d00
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <!-- For PBAP Owner Vcard Info -->
    <uses-permission android:name="android.permission.READ_PROFILE"/>
    <application
+5 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import com.android.bluetooth.btservice.ProfileService;
public class HeadsetService extends ProfileService {
    private static final boolean DBG = true;
    private static final String TAG = "HeadsetService";
    private static final String MODIFY_PHONE_STATE = android.Manifest.permission.MODIFY_PHONE_STATE;

    private HeadsetStateMachine mStateMachine;
    private static HeadsetService sHeadsetService;

@@ -452,6 +454,7 @@ public class HeadsetService extends ProfileService {

    private void phoneStateChanged(int numActive, int numHeld, int callState,
                                  String number, int type) {
        enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null);
        Message msg = mStateMachine.obtainMessage(HeadsetStateMachine.CALL_STATE_CHANGED);
        msg.obj = new HeadsetCallState(numActive, numHeld, callState, number, type);
        msg.arg1 = 0; // false
@@ -459,11 +462,13 @@ public class HeadsetService extends ProfileService {
    }

    private void roamChanged(boolean roam) {
        enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null);
        mStateMachine.sendMessage(HeadsetStateMachine.ROAM_CHANGED, roam);
    }

    private void clccResponse(int index, int direction, int status, int mode, boolean mpty,
                             String number, int type) {
        enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null);
        mStateMachine.sendMessage(HeadsetStateMachine.SEND_CCLC_RESPONSE,
            new HeadsetClccResponse(index, direction, status, mode, mpty, number, type));
    }