Neither user 10056 nor current process has android.permission.MODIFY_PHONE_STATE

10,156

Solution 1

Remove this line and your code should work:

telephonyService.silenceRinger();

That is an invalid call after Android 2.2.

Solution 2

Have you tried like bellow ?

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:1231231234"));
startActivity(intent);

Solution 3

MODIFY_PHONE_STATE permission used by system apps only not by third party apps.

Instead of using answerRingingCall(), u can use key events Like:

Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, 
new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");
Share:
10,156

Related videos on Youtube

Juned
Author by

Juned

SOreadytohelp Linux VoIP JAVA Android DevOps Ansible

Updated on February 12, 2023

Comments

  • Juned
    Juned about 1 year

    I want to create such an application in which i want to open a dialer with specified number during call.

    I have successfully opened the dialer during a call with refrence of this LINK but not able to dial the number, and another issue is that code is not working above Android 2.2. is there any other way to make this working in all devices.

    Code :

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    Class c = Class.forName(tm.getClass().getName());
    Method m = c.getDeclaredMethod("getITelephony");
    m.setAccessible(true);
    ITelephony telephonyService;
    telephonyService = (ITelephony)m.invoke(tm);
    
    // Silence the ringer and answer the call!
    telephonyService.silenceRinger();
    telephonyService.answerRingingCall();
    telephonyService.showCallScreen();
    telephonyService.showCallScreenWithDialpad(true);
    

    ERROR LOG:

    01-09 17:35:41.065: W/Resources(367): Converting to string: TypedValue{t=0x10/d=0x2 a=-1}
    01-09 17:38:23.446: W/System.err(367): java.lang.SecurityException: Neither user 10056 nor current process has android.permission.MODIFY_PHONE_STATE.
    01-09 17:38:23.446: W/System.err(367):  at android.os.Parcel.readException(Parcel.java:1322)
    01-09 17:38:23.446: W/System.err(367):  at android.os.Parcel.readException(Parcel.java:1276)
    01-09 17:38:23.446: W/System.err(367):  at com.android.internal.telephony.ITelephony$Stub$Proxy.silenceRinger(ITelephony.java:549)
    01-09 17:38:23.446: W/System.err(367):  at com.everysoft.autoanswer.AutoAnswerIntentService.answerPhoneAidl(AutoAnswerIntentService.java:137)
    01-09 17:38:23.446: W/System.err(367):  at com.everysoft.autoanswer.AutoAnswerIntentService.onHandleIntent(AutoAnswerIntentService.java:94)
    01-09 17:38:23.446: W/System.err(367):  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
    01-09 17:38:23.446: W/System.err(367):  at android.os.Handler.dispatchMessage(Handler.java:99)
    01-09 17:38:23.446: W/System.err(367):  at android.os.Looper.loop(Looper.java:123)
    01-09 17:38:23.446: W/System.err(367):  at android.os.HandlerThread.run(HandlerThread.java:60)
    

    Manifest.xml

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    

    EDIT

    I am able to auto answer the call in all devices but having problem with opening a dialpad only.

  • Juned
    Juned over 10 years
    I am able to answer the call in all devices but having problem with opening a dialpad only.
  • PsyGik
    PsyGik over 10 years
    Please check this Link. MODIFY_PHONE_STATE cannot be used by 3rd party apps.
  • Juned
    Juned over 10 years
    it will place new call
  • CR Sardar
    CR Sardar over 10 years
    then what is ur requirement?
  • Juned
    Juned over 10 years
    want to send DTMF during call
  • CR Sardar
    CR Sardar over 10 years
    As per my knowdedge u r not allowed to do that. What u r trying to do in above code is short of hacking not a standard way to do.
  • Juned
    Juned over 10 years
    I want develop feature like callback, so what will be the exact process to do that? or its not possible in Android ?
  • Vineesh TP
    Vineesh TP about 7 years
    @user543: Not working, is there any other solution for accept call
  • Antroid
    Antroid almost 6 years
    MODIFY_PHONE_STATE is a private permission only available for System Apps